【前端面试3+1】10 npm run dev 发生了什么、vue的自定义指令如何实现、js的数据类型有哪些及其不同、【最长公共前缀】

一、npm run dev发生了什么

        运行`npm run dev`时,通常是在一个基于Node.js的项目中,用来启动开发服务器或者执行一些开发环境相关的任务。下面是一般情况下`npm run dev`会执行的步骤:

1. 查找package.json中的scripts字段:

        npm会在项目根目录下的package.json文件中查找scripts字段,找到对应的"dev"命令。

2. 执行对应的脚本:

        找到"dev"对应的脚本后,npm会执行该脚本。脚本可以是一个简单的命令,也可以是复杂的脚本。

3. 执行脚本中定义的命令:

        一般来说,"dev"脚本会包含一系列命令,比如启动开发服务器、编译代码、打包资源等。npm会按照脚本中定义的命令顺序执行这些命令。

4. 启动开发服务器:

        如果"dev"脚本中包含了启动开发服务器的命令,npm会启动一个本地开发服务器,用于在开发环境中预览项目。

5. 监听文件变化:

        通常开发环境下会监听文件的变化,一旦文件发生改动,开发服务器会重新编译代码并刷新页面,以便开发者实时查看修改效果。

        总的来说,运行`npm run dev`会根据package.json中定义的"dev"脚本来执行开发环境相关的任务,比如启动开发服务器、编译代码、监听文件变化等。这样可以方便开发者在开发过程中实时查看项目的变化,并进行调试和优化。

二、vue的自定义指令如何实现?

        在Vue中,可以通过Vue.directive()方法来定义自定义指令。下面是一个简单的示例,展示如何编写一个自定义指令:

// 全局注册一个自定义指令 'my-directive'
Vue.directive('my-directive', {
  // 当绑定元素插入到 DOM 中
  inserted: function (el) {
    // 设置元素的背景颜色为红色
    el.style.backgroundColor = 'red';
  }
});

        在上面的示例中,我们定义了一个名为my-directive的自定义指令,它会在绑定元素插入到DOM中时,将元素的背景颜色设置为红色。

接下来,我们可以在Vue组件的模板中使用这个自定义指令:

<template>
  <div v-my-directive>
    This is a custom directive example
  </div>
</template>

        在上面的模板中,我们使用v-my-directive指令来调用我们定义的自定义指令。当这个组件被渲染时,指令会生效,将对应的元素的背景颜色设置为红色。

        这只是一个简单的示例,实际上自定义指令还可以包含更多的钩子函数和参数,以实现更复杂的功能。在编写自定义指令时,可以根据需求选择合适的钩子函数和参数,并根据业务逻辑实现相应的功能。

三、js的数据类型有哪些,它们有什么不同?

        在JavaScript中,数据类型可以分为两大类:原始数据类型引用数据类型

1.分类:

  1. 原始数据类型

    • String:表示文本数据,用单引号或双引号包裹。
    • Number:表示数字,包括整数和浮点数。
    • Boolean:表示逻辑值,只有两个取值:truefalse
    • Null:表示空值。
    • Undefined:表示未定义的值。
    • Symbol(ES6新增):表示唯一的、不可变的值。
  2. 引用数据类型

    • Object:表示复杂数据类型,可以存储多个键值对。
    • Array:表示数组,可以存储多个值。
    • Function:表示函数。
    • Date:表示日期和时间。
    • RegExp:表示正则表达式。

2.不同:

  • 原始数据类型是存储在栈内存中的简单数据段,可以直接访问和操作,具有固定大小。
  • 引用数据类型是存储在堆内存中的对象,存储的是对象的引用地址,通过引用来访问和操作,大小不固定。
  • 原始数据类型是按值访问的,每个变量都会存储自己的值,互相独立。
  • 引用数据类型是按引用访问的,多个变量可能会指向同一个对象,操作一个变量会影响其他指向同一对象的变量。
  • 原始数据类型是不可变的,一旦创建就不能被修改
  • 引用数据类型是可变的,可以动态地添加、修改和删除属性

四、【算法】最长公共前缀

1.题目:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

2.解题:

方一:
  1. 先处理特殊情况,如果输入的字符串数组为空,则直接返回空字符串。
  2. 遍历一遍字符串数组,找出最短的字符串的长度,作为最长公共前缀的最大可能长度。
  3. 创建一个新的字符数组 result 来存储最长公共前缀。
  4. 从第一个字符开始,逐个比较每个字符串的对应位置的字符,如果有不同的字符出现,则说明最长公共前缀到此为止。
  5. 如果所有字符串的对应位置的字符都相同,则将该字符添加到 result 中。
  6. 最后返回 result,即为最长公共前缀。
char* longestCommonPrefix(char** strs, int strsSize) {
    if (strsSize == 0) {
        return "";
    }
    
    int minLen = strlen(strs[0]);
    for (int i = 1; i < strsSize; i++) {
        minLen = fmin(minLen, strlen(strs[i]));
    }
    
    char* result = (char*)malloc((minLen + 1) * sizeof(char));
    memset(result, 0, (minLen + 1) * sizeof(char));
    
    for (int i = 0; i < minLen; i++) {
        char c = strs[0][i];
        for (int j = 1; j < strsSize; j++) {
            if (strs[j][i] != c) {
                result[i] = '\0';
                return result;
            }
        }
        result[i] = c;
    }
    
    return result;
}
方二:
  1. 首先检查输入的字符串数组长度是否为0,如果是,则直接返回空字符串""。

  2. 为存储最长公共前缀的字符数组same分配内存空间,大小为第一个字符串的长度加1,加1是为了存储字符串结束符'\0'。

  3. 初始化变量len为0,表示当前比较的字符索引位置,f为第一个字符串的第一个字符。

  4. 进入循环,判断当前位置len上的字符是否为字符串结束符'\0',如果不是则继续比较。

  5. 在内部循环中,遍历除第一个字符串外的所有字符串,逐个比较它们在当前位置len上的字符是否与第一个字符串相同,如果不同,则将same在位置len处设为结束符'\0',表示当前位置为最长公共前缀,然后返回same

  6. 如果所有字符串在当前位置len上的字符都相同,则将该字符存储到same的当前位置len处,然后继续比较下一个位置的字符。

  7. 循环直到某个字符串遍历完或者出现字符不相同的情况,此时将same在位置len处设为结束符'\0',表示最长公共前缀结束,然后返回same

  8. 最后将same在当前位置len处设为结束符'\0',确保返回的字符串正确结束。

  9. 返回存储最长公共前缀的字符数组same

char* longestCommonPrefix(char** strs, int strsSize) {
    if (strsSize == 0) return ""; 
    char* same = (char*)malloc((strlen(strs[0])+1) * sizeof(char));
    int len=0;
    char f=strs[0][len];
    while(f != '\0'){
        for(int i=1;i<strsSize;i++){
            if(strs[i][len]!=f){
                same[len] = '\0';
                return same;
            }
        }
        same[len]=f;
        len++;
        f=strs[0][len];
    }
    same[len] = '\0';
    return same;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513997.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL server 查询数据库中所有的表名及行数

SQL server 查询数据库中所有的表名及行数 select a.name,b.rows from sysobjects as ainner join sysindexes as bon a.id b.id where (a.type u)and (b.indid in (0, 1)) and b.rows<50 and b.rows>20 order by a.name, b.rows desc;

elementui 左侧或水平导航菜单栏与main区域联动

系列文章目录 一、elementui 导航菜单栏和Breadcrumb 面包屑关联 二、elementui 左侧导航菜单栏与main区域联动 三、elementui 中设置图片的高度并支持PC和手机自适应 四、elementui 实现一个固定位置的Pagination&#xff08;分页&#xff09;组件 文章目录 系列文章目录…

glm2大语言模型服务环境搭建

一、模型介绍 ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本&#xff0c;在保留了初代模型对话流畅、部署门槛较低等众多优秀特性的基础之上&#xff0c;ChatGLM2-6B 引入了如下新特性&#xff1a; 更强大的性能&#xff1a;基于 ChatGLM 初代模型的开发经验&…

当Pycharm中右键运行python程序时出现Run ‘pytest in tests ***py‘,如何解决?

1、在Pycharm中右键运行python程序时出现Run pytest in tests ***py &#xff0c;这是进入了Pytest模式。 2、解决办法 进入到File->Settings->Tools->Python integrated Tools页面或者快捷键&#xff08;CtrlAltS&#xff09; 找到Testing下的Default test runner …

用QT调用FFMPEG的接口

1、调用FFmpeg接口 打开Qt&#xff0c;新建工程&#xff1b; 在工程的pro文件中&#xff0c;添加如下字段&#xff1b; TEMPLATE app CONFIG console CONFIG - app_bundle CONFIG - qtSOURCES \main.c INCLUDEPATH /home/wxw/ffmpeg_build/includeLIBS /home/wxw/ffmpe…

centOS如何升级python

centOS下升级python版本的详细步骤 1、可利用linux自带下载工具wget下载&#xff0c;如下所示&#xff1a; 笔者安装的是最小centos系统&#xff0c;所以使用编译命令前&#xff0c;必须安装wget服务&#xff0c;读者如果安装的是界面centos系统&#xff0c;或者使用过编译工具…

drawio画图编辑图形颜色

drawio画图编辑图形颜色 团队的安全第一图表。将您的存储空间带到我们的在线工具中&#xff0c;或使用桌面应用程序进行本地保存。 1.安装准备 1.1安装平台 多平台 1.2在线使用 浏览器打开网页使用 1.3软件下载 drawio官网github仓库下载 2.在浏览器的网页中使用drawio…

c++20协程详解(三)

前言 前面两节我们已经能够实现一个可用的协程框架了。但我们一定还想更深入的了解协程&#xff0c;于是我们就想尝试下能不能co_await一个协程。下面会涉及到部分模板编程的知识&#xff0c;主要包括&#xff08;模板偏特化&#xff0c;模板参数列表传值&#xff0c;模板函数…

redis事务(redis features)

redis支持事务&#xff0c;也就是可以在一次请求中执行多个命令。redis中的事务主要是通过MULTI和EXEC这两个命令来实现的。 MULTI命令用来开启一个事务&#xff0c;事务开启之后&#xff0c;所有的命令就都会被放入到一个队列中&#xff0c;最后通过一个EXEC命令来执行事务中…

【MATLAB源码-第29期】基于matlab的MIMO,MISO,SIMO,SISO瑞利rayleigh信道容量对比。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. SISO&#xff08;单输入单输出&#xff09;&#xff1a; - SISO 是指在通信系统中&#xff0c;只有一个天线用于传输信号&#xff0c;也只有一个天线用于接收信号的情况。这是最简单的通信方式。 2. SIMO&#xff08;单…

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长&#xff0c;展览馆作为展示文化、艺术和科技成果的重要场所&#xff0c;其安全监控系统的智能化升级已成为当务之急。为此&#xff0c;旭帆科技&#xff08;TSINGSEE青犀&#xff09;基于视频智能分析技术推出了展览…

单例模式(加深版)

单例模式&#xff08;加深版&#xff09; 饿汉模式 缺点&#xff1a;造成资源的浪费 示例&#xff1a; ## 懒汉模式 示例&#xff1a; 枚举类型单例模式 示例&#xff1a;

ElasticSearch7.8的下载与安装和Kibana 7.8.0工具使用安装

1、ElasticSearch7.8.0下载 elasticsearch: 官方下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 链接: https://pan.baidu.com/s/1wAKQoB3nhLhcnBlPfVOLxQ 提取码: t83n kibana: 链接: https://pan.baidu.com/s/156aD9zDdvUv8LFgDEIPoSw 提取码:…

案例分析-程序的机器级表示

案例一&#xff1a;关于编译优化 请自写一段if- else简单分支程序&#xff0c;分别尝试对它进行不带优化、-O1优化和-O2优化&#xff0c;比较它们的机器级表达&#xff0c;并讨论优劣。 图一为不带优化、图二为O1优化、图三为O2优化、图四为原始C代码。 &#xff08;1&#xff…

Docker实战教程 第1章 Linux快速入门

2-1 Linux介绍 为什么要学Linux 三个不得不学习 课程需要&#xff1a;Docker开发最好在Linux环境下。 开发需要&#xff1a;作为一个后端程序员&#xff0c;是必须要掌握Linux的&#xff0c;这是找工作的基础门槛。 运维需要&#xff1a;在服务器端&#xff0c;主流的大型服…

JVM中常见垃圾收集器介绍

常见垃圾收集器 垃圾收集器介绍垃圾收集器使用命令及默认值串行垃圾收集器并行垃圾收集器CMS&#xff08;并发&#xff09;垃圾收集器G1收集器&#xff08;Garbage-First Collector&#xff09;面试题&#xff1a;为何新生代和老年代采取的算法不一样? 垃圾收集器介绍 GC算法…

ArrayList与线性表详解

1.线性表 线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表有&#xff1a;顺序表、链表、队列…… 线性表在逻辑上是线性结构&#xff0c;也就是说是连续的一条直线。但是在物理结构上不一定是连续的&#xff…

VGA显示器驱动设计与验证

1.原理 场同步信号的单位是像素点 场同步信号的单位是一行 60的含义是每秒钟刷新60帧图像 全0表示黑色 2.1 CLK_gen.v module CLK_gen(input wire sys_clk ,input wire sys_rst_n ,output wire CLK_out ,output wire locked );parameter STATE1b0; reg [1:0] cnt; r…

E5071C是德科技E5071C网络分析仪

181/2461/8938产品概述&#xff1a; E5071C ENA 矢量网络分析仪&#xff0c;9 kHz 至 20 GHz&#xff0c;配有增强型 TDR 测量选件。E5071C 网络分析仪具有较高的射频性能和较快的速度&#xff0c;并具有宽频率范围和全面的功能。它是制造和研发工程师们测试频率范围在 20 GHz…

uniapp自定义卡片轮播图

效果图 1、封装组件 <template><view><!-- 自定义卡片轮播 --><swiper class"swiperBox" :previous-margin"swiper.margin" :next-marginswiper.margin :circular"true"change"swiperChange"><swiper-ite…