2024年Vue3 面试题小总结

news2025/1/19 8:01:55

Vue3 面试题小总结

1. OptionsAPI 与 CompositionAPI 的区别?

  • OptionsAPI
    • 选项式API,通过定义data、computed、watch、method等属性与方法,共同处理页面逻辑;
    • 缺点:
      • 当组件变得复杂的时候,导致对应属性的列表也会增长,可能会导致组件难以阅读和后期维护成本变高;
  • CompositionAPI
    • 组合式API,组件根据逻辑功能来组织,一个功能所定义的所有API会放在一起(高内聚,低耦合);
    • 优点:
      • 内部的功能容易碎片化,像某一个功能相关的数据放在一块,容易阅读和维护(不用翻来翻去找);
      • 将某个逻辑关注点相关的代码全都放在一个函数里,这样,当需要修改一个功能时,就不再需要在文件中跳来跳去;
      • 逻辑复用:
        • 在Vue2中,当混入多个mixin会存在两个非常明显的问题:命名冲突,数据来源不清晰;
        • 而组合式API可以通过编写多个函数就很好的解决了;
  • 总结
    • 在逻辑组织和逻辑复用这方面,组合式API是优于选项式API的;
    • 组合式API中见不到this的使用,减少了this指向不明的情况;
    • 组合式API几乎都是函数,会有更好的类型推断;

2. Vue3中为什么采用 Proxy 代替 defineProperty

  • defineProperty:
    • 来劫持整个对象,然后进行深度遍历,给每个属性添加 gettersetter,实现响应式,但是存在以下问题:
      • 检测不到对象属性的添加和删除;
      • 数组API方法无法监听到;
      • 需要对每个属性进行深度遍历,如果是嵌套对象,需要深层次监听,造成性能问题;
  • Proxy
    • 监听整个对象,那么整个对象的所有操作都会进入监听操作;
  • 总结
    • Object.defineProperty只能遍历对象属性进行劫持;
    • Proxy 直接可以劫持整个对象,便返回一个新对象,我们可以操作新对象达到响应式目的;
    • Proxy 可以直接监听数组的变化;
    • Proxy有13种拦截方法,不限于apply、ownKeys、deleteProperty、has等等,这是Object.defineProperty不具备的;

3. Vue3响应式原理

  • Vue响应式使用的是ES6的ProxyReflect相互配合实现数据响应式,解决了Vue2中试图不能自动更新的问题;
  • Proxy是深度监听,所以可以监听对象和数组内的任意元素,从而可以实现视图实时更新;
  • 响应式大致分为三个阶段:
    • 初始化阶段
      • 初始化阶段通过组件初始化方法形成对应的proxy对象,然后形成一个负责渲染的effct
    • get依赖收集阶段
      • 通过解析template,替换真实data属性,来触发get,然后通过satck方法,通过proxy对象key形成对应的deps,将负责渲染的effect存入deps。(这个过程还有其他的effect,比如watchEffect存入deps中 )。
    • set派发更新阶段
      • 当我们 this[key] = value 改变属性的时候,首先通过trigger方法,通过proxy对象key找到对应的deps,然后给deps分类分成computedRunnerseffect,然后依次执行,如果需要调度的,直接放入调度。

Proxy只会代理对象的第⼀层,那么Vue3⼜是怎样处理这个问题的呢?

  • 判断当前Reflect.get的返回值是否为Object,如果是则再通过 reactive ⽅法做代理, 这样就实现了深度观测。

监测数组的时候可能触发多次get/set,那么如何防⽌触发多次呢?

  • 我们可以判断key是否为当前被代理对象target⾃身属性,也可以判断旧值与新值是否相等,只有满⾜以上两个条件之⼀时,才有可能执⾏trigger。

4. watch 和 watchEffect 的区别?

  • watchwatchEffect 都是监听器,watchEffect 是一个副作用函数,它们之间的区别有:
  1. watch:既要指明监听数据的源,也要指明监听的回调;
  2. watchEffect:可以自动监听数据源作为依赖,不用指明监听那个数据,监听的回调中用到哪个数据,那就监听哪个数据;
  3. watch 可以访问改变前后的值,watchEffect 只能获取改变后的值;
  4. watch运行的时候 不会立即执行,值改变后才会执行,而watchEffect运行后可立即执行,这一点可以通过watch的配置项immeriate改变;
  5. watchEffect 有点像 computed
    • computed注重的是计算出来的值(回调函数的返回值),所以必须写返回值;
    • watchEffect注重的是过程(回调函数的函数体),所以不用写返回值;
      • watchEffect所指定的回调中用到的数据只要发生变化,则直接重新执行回调;
  6. Vue3与Vue2中的watch配置项一致,但也有两个小坑:
    • 监听reactive定义的响应式数据时,oldVal无法正确获取到,强制开启深度监听,depp配置项失效;
    • 监听reactive定义的响应式数据的某个属性时,deep配置项有效;

5. ref 与 reactive 的区别?

  1. refreactive它们主要用于响应式数据的创建;
  2. ref函数可以接收原始数据类型和引用数据类型;
  3. 使用ref声明的数据,在JS中使用的时候,需要添加.value的后缀;
  4. reactive函数只能接收引用数据类型;
  5. ref底层还是使用reactive来做,ref是在reactive上进行了封装,增强了其能力,使其支持了对原始数据类型的处理;
  6. Vue3中,reactive能做的ref能做,reactive不能做的ref也能做;

6. script setup 是干什么的?

  • script setup是Vue3的语法糖,简化了组合式API的写法,并且运行性能更高,使用script setup语法糖的特点:
  1. 属性和方法无需返回,直接使用;
  2. 引入组件的时候,会自动注册;
  3. 使用defineProps接收父组件传递的值;
  4. 使用useAttrs获取属性,useSlots获取插槽,defineEmits获取自定义事件;
  5. 默认不会对外暴露任何属性,如果有需要使用defineExpose

7. vFor 与 vIf 的优先级

  • 当面试官问到这个问题的时候,我们不能直接说前者比后者高(或者后者比前者高);
  • 我们应当根据Vue的不同版本做不同的回答;
  • Vue2
    • vFor 高于 vIf
  • Vue3
    • vIf 高于 vFor
  • 两个版本的区别
    • Vue2中,可以一起使用,但是非常不推荐哈,vIf也能获取到vFor中的item
    • Vue3中,不能一起使用,因为vIf不能使用vFor中的item(会直接报错,不能从 undefined中读取xxx属性);
      • image.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于安卓的移动视频监控系统的设计与实现

摘 要 随着网络通信技术和视频编解码技术的不断进步,视频监控系统也不断发展。目前,第三代视频监控技术即网络视频监控技术已经占据市场主流,人们对移动视频监控系统的市场需求也在日益扩大。与此同时,安卓智能手机市场飞速发展&…

CentOS7.9 Nginx + EMQX集群组建 MQTTS平台

前面我们有介绍过单机版EMQX的安装 CentOS7 安装 EMQX(MQTT),今天我们来讲一下实际项目里用的到MQTTS平台。 一、EMQX单机配置 简单部署两个节点,修改对应配置文件 (/usr/local/emqx/etc/emqx.conf) 中的node内容: nam…

R语言绘制散点密度图ggdentity

使用R语言绘制二维密度图 下图是一张常见的二维核密度散点图,能够清晰直观的反映出数据之间的分布趋势,颜色越红的位置数据越集中分布。今天分享的笔记是在R语言中绘制该图的两种常见方法,提供过程代码。 论文中常见的这种展示两组数据之间分…

八、词嵌入语言模型(Word Embedding)

词嵌入(Word Embedding, WE),任务是把不可计算、非结构化的词转换为可以计算、结构化的向量,从而便于进行数学处理。 一个更官方一点的定义是:词嵌入是是指把一个维数为所有词的数量的高维空间(one-hot形式…

[SaaS] AI试衣间

就刚刚!我在淘宝用AI试了1000件衣服~淘宝AI试衣间,1秒换装,立即解锁不一样的你!https://mp.weixin.qq.com/s/mZiNmepoWddYaLbEaap1Ow

云服务器租用4核16G配置价格表,阿里云和腾讯云费用价格对比

4核16G服务器租用优惠价格26元1个月,腾讯云轻量4核16G12M服务器32元1个月、96元3个月、156元6个月、312元一年,阿腾云atengyun.com分享4核16服务器租用费用价格表,阿里云和腾讯云详细配置报价和性能参数表: 腾讯云4核16G服务器价…

Python读取Excel工作表数据写入CSV、XML、文本

Excel工作簿是常用的表格格式,许多数据呈现、数据分析和数据汇报都是以Excel工作表的形式进行。然而,在实际的数据管理、分析或自动化流程构建过程中,我们常常需要将这些Excel中的数据迁移至更其他数据系统,或者以文本形式存储以便…

qt5-入门-QTableWidget简单使用

参考: C GUI Programming with Qt 4, Second Edition 本地环境: win10专业版,64位,Qt5.12 目录 效果代码头文件源文件可能遇到的问题只显示表头不显示内容 效果 填充一个列表,在列表中点击“颜色”一列,可…

面试经典150题——随机链表的复制

​前两天断更了两天有点事情🤗 1. 题目描述 2. 题目分析与解析 2.1 思路一 开始还是没什么思路,没思路那就先把题目解决不管方法的好坏。如果不考虑复杂度,该怎么解决? 可以有这样的一种思路: 首先复制链表的所有节…

springboot271制造装备物联及生产管理ERP系统

制造装备物联及生产管理ERP系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装制造装备物联及…

C语言例:表达式(a=2,3),a+1的值

题目&#xff1a;设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为&#xff1a;%d\n",b); //a2,4的值为&…

【1】Python零基础起步

什么是编程(Programming) 编程是编定程序的中文简称&#xff0c;就是让计算机代码解决某个问题&#xff08;目的&#xff09;&#xff0c;对某个计算体系规定一定的运算方式&#xff0c;使计算体系按照该计算方式运行&#xff0c;并最终得到相应结果的过程&#xff08;手段&am…

Window11安装达梦数据库

由于现在流行国产化&#xff0c;很多公司的数据库产品都使用了国产数据库&#xff0c;所以&#xff0c;今天给大家讲解一下&#xff0c;达梦数据库的安装和试用&#xff0c;这样学完以后&#xff0c;就可以直接在公司里面用了。 首先&#xff0c;需要先注册账号&#xff0c;然…

#数据结构 线性表的顺序存储

目录 每日文案 一、线性表的定义 二、线性表的操作 顺序表的存储结构 顺序表的初始化操作 判断顺序表是否为空表 将顺序表置为空表 计算顺序表中的元素个数 取出顺序表中的对应位置元素 取出对应数值的位序 在对应位置插入元素 将对应位置的元素删除 将顺序表中的数据…

视觉系统对透明胶水的检测都有哪些方案?

透明胶水的检测在工业生产中是一个挑战&#xff0c;因为传统的基于RGB相机的视觉系统通常难以检测透明物体。然而&#xff0c;随着技术的发展&#xff0c;现在有多种方法可以有效地检测透明胶水。 1. 高光谱相机&#xff1a;高光谱相机可以提供不同于传统RGB相机的解决方案。例…

为什localhost被forbidden而127.0.0.1不被绊?

原因&#xff1a; 判段网关的时候判127.0.0.1&#xff0c;所以最好改localhost 其他参考&#xff1a; 【计算机网络】localhost不能访问&#xff0c;127.0.0.1可以访问&#xff1f;_ping localhost和ping 127.0.0.1-CSDN博客

【LeetCode每日一题】2312. 卖木头块(DFS记忆化搜索+动态规划)

文章目录 [2312. 卖木头块](https://leetcode.cn/problems/selling-pieces-of-wood/)思路1:用DFS进行记忆化搜索代码&#xff1a;思路2:动态规划代码&#xff1a; 2312. 卖木头块 思路1:用DFS进行记忆化搜索 1.要用DFS深度优先遍历每一种情况。在递归的同时&#xff0c;不断更…

了解什么是 Redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?

目录 一、面试官心理分析 二、面试题剖析 1. 缓存雪崩 2. 缓存穿透 3. 缓存击穿 一、面试官心理分析 其实这是问到缓存必问的&#xff0c;因为缓存雪崩和穿透&#xff0c;是缓存最大的两个问题&#xff0c;要么不出现&#xff0c;一旦出现就是致命性的问题&#x…

WOA-GRU多输入时序预测 | 鲸鱼优化算法-门控循环单元神经网络 | Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&…

国产软件很流氓?这些良心之作,比你想象的更加强大

说到国产软件&#xff0c;大家可能首先会想到“流氓软件”、“捆绑安装”和“满屏广告”这些烦人的标签。直接上狠货&#xff0c;几款高质量软件&#xff0c;错过了&#xff0c;真可惜。 1、格式工厂 说起格式工厂&#xff0c;这款国产软件可谓是历史悠久&#xff0c;曾经陪伴…