vue3面试题及答案

1、Vue3 出现解决了什么问题?它有哪些优势?

Vue2 代码模式下存在的几个问题:
随着功能增加,复杂的组件代码越来越多,变得难以维护。主要原因是 vue2 通过选项
式API组织的代码,一个逻辑功能可能有多处代码,不易别人上手。
缺少一个比较干净的在多个组件之间可以提取和复用逻辑的机制。
类型推断不友好。
没有静态类型检查,只有代码运行之后才能发现错误等等。
Vue3 是在 Vue2 的基础上进行了一些优化,对 typeScript 有了更好的支持。Vue3 和 Vue2 是可以共存 的,Vue3 能够向下兼容支持选项式 API ,同时又新增了一些特性,大大提升了性能。
Vue3 的优势:
性能更好
体积更小
更好地 ts 支持
更好的代码组织
更好的逻辑抽离
更多新的功能

2、Vue3 新特性有哪些?

vue3的新增特性有:
1、性能提升 响应式性能提升,由原来的 Object.defineProperty 改为基于ES6的 Proxy ,使其速度
更快,消除警告。
重写了 Vdom ,突破了 Vdom 的性能瓶颈。
进行模板编译优化。
更加高效的组件初始化。
2、更好的支持 typeScript
有更好的类型推断,使得 Vue3 把 typeScript 支持得非常好。
3、新增Composition API
Composition API 是 vue3 新增的功能,比 mixin 更强大。它可以把各个功能模块独立开来,提高代码逻 辑的可复用性,同时代码压缩性更强。
4、新增组件
Fragment 不再限制 template 只有一个根几点。
Teleport 传送门,允许我们将控制的内容传送到任意的 DOM 中。
Supense 等待异步组件时渲染一些额外的内容,让应用有更好的用户体验。
5、Tree-shaking:支持摇树优化
摇树优化后会将不需要的模块修剪掉,真正需要的模块打到包内。优化后的项目体积只有原来的一半,加载速度更快。
6、Custom Renderer API: 自定义渲染器
实现 DOM 的方式进行 WebGL 编程。

3、vue2 和 vue3 的响应式有什么区别?

vue2 的响应式原理:
对象:是通过 Object.defineProperty 对 对象的已有属性值的读取和修改进行劫持。
存在的问题:对象直接添加新属性或删除已有属性的时候,界面不会自动更新。
数组:是通过重写数组更新数组一系列更新元素的方法,来实现元素修改的劫持。
存在问题:直接通过下标替换元素或更新length的时候,界面不会自动更新。
Object.defineProperty( 'data', 'count', { get(){
}, set(){
}
})
// 伪代码
const originalProto = Array.prototypeconst arrayProto = Object.create(originalProto)
['push','pop','shift','unshift','splice','reverse','sort'].forEach(key=>{
arrayProto[key] = f u n c t i o n(){originalProto[key].apply(t h i s.arguments)notifyUpdate()
}
})

针对 vue2 对象和数组的某些更新,界面不能自动更新的问题,vue2 通过 $set 方法,实现视图的实时更新。
vue3的响应式原理:
vue3 响应式是使用 ES6 的 proxy 和 Reflect 相互配合实现数据响应式,解决了 vue2 中视图不能自动更新的问题。
proxy 是深度监听,所以可以监听对象和数组内的任意元素,从而可以实现视图实时更新。

4、vue3 组合式API生命周期钩子函数有变化吗?

setup 是围绕 beforeCreate 和 created 生命周期钩子运行的,所以不需要显示的定义它们。其他的钩子都可以编写到 setup 内。
值得注意的是组合式API中的钩子函数,通过在生命周期钩子前面加上 “on” 来访问组件的生命周期钩 子,需要注册,并且只能在 setup 期间同步使用,因为它们依赖于内部的全局状态来定位当前组件实例。
下图是选项式API 和 组合式API 生命周期钩子对比:

5、Composition API 与 Options API 有什么区别?

import { onMounted } from "vue"export default {
setup() {  // mountedonMounted(() => {   console.log('Component is mounted!')})
}
}

Options API 是啥?
vue2 中我们把一个 vue 文件中 data、methods、props、mounted、computed 等定义属性和方法,共 同处理页面逻辑,这种方式叫做 Options API。
这种方式开发的复杂组件,同一个功能的往往需要在不同 vue 配置项中定义属性和方法,代码比较分散。
如果功能比较复杂,维护代码的时候往往会很难分清每个方法对应的功能,增加了代码维护成本。所以 vue3 舍弃了 Options API ,换用 Composition API。
Composition API 是啥?
Composition API 是 vue3 新增的,所以 vue2 没有。在 Composition API 中,根据代码逻辑功能来组织 的,一个功能所定义的所有 API 都会放到一起,这样即使功能复杂,代码量增大,都可以一下子定位到某 个功能的所有代码,代码维护方便。它的最大特点就是:高内聚,低耦合。
vue3 仍然支持 options API,但我们更推荐使用 Composition API。优劣比较:
更好的可编程性。
更优的代码组织。
更好的逻辑抽象能力。
对 tree-shaking 友好,代码也更容易压缩。
没有 this ,没烦恼。

6、watch 和 watchEffect 的区别?

watch 和 watchEffect 都是监听器,watchEffect 是一个副作用函数。它们之间的区别有: 1. watch 需要传入监听的数据源,而 watchEffect 可以自动手机数据源作为依赖。
2. watch 可以访问倒改变之前和之后的值,watchEffect 只能获取改变后的值。
3. watch 运行的时候不会立即执行,值改变后才会执行,而 watchEffect 运行后可立即执 行。这一点可以通过 watch 的配置项 immediate 改变。

7、vue2 如何升级到 vue3 ?

如果是把之前的 vue2 项目升级到 vue3 ,先卸载旧版本的 vue-cli,安装最新版本。安装完成之后,检查 vue 的版本。然后需要注意,把项目中 vue3 发生改变或被废弃的特性需要进行修改。如:
$children 被 vue3 移除,使用 $children 的需要替换为 $ref。
filters 被移除,更改为 computed 。
$destory 被移除,需要删除掉。
插槽的新变化。
Vuex 使用发生改变。
vue-router 使用发生改变等等。
可以自行在官网查看升级指南。地址如图
8、v-if 和 v-for 的优先级哪个高?
在 vue2 中 v-for 的优先级更高,但是在 vue3 中优先级改变了。v-if 的优先级更高。
在 vue2 中 v-for 和 v-if 同时出现时,可放在一个标签内,如下写法:
在 vue3 中这样写会报错,就是因为 v-if 的优先级更高,所以 item.show 是未定义报错了。
<d i v v-for="item in ss" v-if="item.show" :key="item.id">
{{ item.show }}</d i v>data(){
return{ss:[
{ id: 1, show: true, name: '1' },
{ id: 2, show: false, name: '2' },
{ id: 3, show: true, name: '3' },]
}}

9、script setup 是干啥的?

scrtpt setup 是 vue3 的语法糖,简化了组合式 API 的写法,并且运行性能更好。使用 script setup 语法 糖的特点:
属性和方法无需返回,可以直接使用。
引入组件的时候,会自动注册,无需通过 components 手动注册。
使用 defineProps 接收父组件传递的值。
useAttrs 获取属性,useSlots 获取插槽,defineEmits 获取自定义事件。
默认不会对外暴露任何属性,如果有需要可使用 defineExpose 。

10、Vue3 性能提升主要体现在哪几方面?

1、响应式性能提升
2、编译优化
3、源码体积的优化

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

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

相关文章

WPF——Binding

一、作用 将Window GUI的运行机理从 “事件驱动” 转变为 “数据驱动”。将UI界面与业务逻辑解耦&#xff0c;使得改动一个而无需改动另一个。数据逻辑层自成体系&#xff0c;使得无需借助UI也可进行单元测试。 二、基础 1. Binding源模板 Binding包括源与目标&#xff0c;源…

揭示数据库内核的奥秘--手写数据库toadb开源项目

揭示数据库内核的奥秘–手写数据库toadb 数据为王的时代 在信息化时代&#xff0c;数据已成为企业和应用不可或缺的核心&#xff0c;而数据库不仅是数据的仓库&#xff0c;更是支撑业务决策、系统运行的基石。对于求职者而言&#xff0c;掌握数据库知识已成为求职市场上的必考…

MinIO Enterprise Cache:实现超性能的分布式 DRAM 缓存

随着计算世界的发展和 DRAM 价格的暴跌&#xff0c;我们发现服务器配置通常配备 500GB 或更多的 DRAM。当您处理大型部署时&#xff0c;即使是那些具有超高密度 NVMe 驱动器的部署&#xff0c;这些服务器上的服务器数量乘以 DRAM 也会迅速增加&#xff0c;通常达到几 TB。该 DR…

详细分析Oracle日期和时间的基本命令

目录 1. 基本类型2. 常用函数3. Demo 1. 基本类型 Oracle支持不同的日期格式模型&#xff0c;其中包括&#xff1a; ISO 8601: YYYY-MM-DDTHH:MI:SS&#xff0c;例如2024-06-20T14:30:00Oracle内部格式: DD-MON-YYYY HH:MI:SS AM&#xff0c;例如20-JUN-2024 02:30:00 PM DA…

【Golang - 90天从新手到大师】Day11 - 包的管理

系列文章合集 Golang - 90天从新手到大师 Go语言中包的使用 Go语言使用包&#xff08;package&#xff09;这种语法元素来组织源码&#xff0c;所有语法可见性均定义在package这个级别&#xff0c;与Java 、python等语言相比&#xff0c;这算不上什么创新&#xff0c;但与C传…

大型语言模型在AMD GPU上的推理优化

Large language model inference optimizations on AMD GPUs — ROCm Blogs 大型语言模型&#xff08;LLMs&#xff09;已经改变了自然语言处理和理解&#xff0c;促进了在多个领域中的众多人工智能应用。LLMs在包括AI助手、聊天机器人、编程、游戏、学习、搜索和推荐系统在内的…

Linux管道与重定向

管道 是进程通信的方法之一&#xff0c;在Linux中用命令1|命令2的形式表示&#xff0c;将前一个命令的结果作为后续命令的参数进行输入&#xff0c;也有tee管道&#xff0c;可以进行多次筛选&#xff0c;即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

windows常见问题

文章目录 Windows下常见问题1. 修改hosts文件2. win10系统卸载edge浏览器 Windows下常见问题 1. 修改hosts文件 hosts文件位置&#xff1a;C:\Windows\System32\drivers\etc\hosts 随便打开一个文件夹&#xff0c;然后在地址栏中输入上面的路径&#xff0c;然后选择使用txt编…

【AI应用探讨】— 盘古大模型应用场景

目录 一、自然语言处理领域 智能客服 机器翻译 语音识别 二、计算机视觉领域 图像分类 目标检测 图像分割 图像生成 三、科学计算领域 气象预测 矿山安全 铁路检测 药物研发 一、自然语言处理领域 智能客服 利用盘古NLP大模型的语言理解和生成能力&#xff0c;提…

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件&#xff0c;类似STM32的STM32CubeMX工具软件。 &#x1f4cd;AT32 TOOL系列工具下载地址&#xff1a;https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

INFINI Labs 助力开源与教育:免费许可证计划全面升级

在数字化浪潮席卷全球的今天&#xff0c;INFINI Labs 深刻认识到开源项目和教育机构在技术创新与人才培养中的核心作用。因此&#xff0c;我们郑重推出全新升级的免费许可证计划&#xff0c;旨在全球范围内为开源社区和教育界提供有力支持&#xff0c;共同推动软件生态的繁荣与…

空压机节能元宇宙:未来工业能源效率的革命

随着全球工业化进程的加速&#xff0c;能源消耗和环境保护已成为全球关注的焦点。在众多工业设备中&#xff0c;空压机作为一种重要的动力设备&#xff0c;其能耗问题尤为突出。为了实现节能减排和可持续发展&#xff0c;探索空压机的节能潜力和创新应用显得尤为重要。在这一背…

什么是数据库?从零开始了解数据库基础概念

什么是数据库&#xff1f;从零开始了解数据库基础概念 相信大家在日常生活中都听到过大数据&#xff0c;数据这个东西越来越火&#xff0c;比如交通大数据、旅游大数据等&#xff0c;&#xff0c;&#xff0c;数据成为了企业决策和业务运作的关键元素。而管理这些庞大而复杂的…

14、顺时针打印矩阵

题目&#xff1a; 顺时针打印矩阵 描述&#xff1a; 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字&#xff0c; 例如&#xff0c; 如果输入如下矩阵&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字&#xff1a;1,2,3,4,8,1…

nginx出现504 Gateway Time-out错误的原因分析及解决

nginx出现504 Gateway Time-out错误的原因分析及解决 1、查看公网带宽是否被打满 2、查看网络是否有波动(可以在nginx上ping后端服务&#xff0c;看是否有丢包情况) 3、查看服务器资源使用情况(cpu、内存、磁盘、网络等) 4、查看nginx日志&#xff0c;具体到哪个服务的哪个…

kali中安装docker

文章目录 前期准备安装步骤后续设置 前期准备 更新系统包列表&#xff1a; 打开终端&#xff0c;首先更新你的系统包列表&#xff0c;确保安装的是最新版本的软件包。 sudo apt update安装依赖&#xff1a; 安装docker.io所需的依赖包。这一步确保了系统具备安装Docker的基本条…

SQL - CTE

CTE&#xff0c;全称为 Common Table Expression&#xff08;公用表表达式&#xff09;&#xff0c;是一种 SQL 表达式&#xff0c;用于命名一个临时结果集&#xff0c;这个结果集仅在执行单个查询&#xff08;包括 SELECT、INSERT、UPDATE 或 DELETE 语句&#xff09;期间可用…

如何利用AI大模型设计电机本体?

一、背景 AI在电机本体设计中的应用正逐渐成为提升设计效率、优化性能和降低成本的重要手段。通过深度学习、机器学习、计算机辅助设计&#xff08;CAD&#xff09;和仿真技术的结合&#xff0c;AI能够帮助工程师更快速准确地完成电机的设计与优化工作。以下是AI在电机本体设计…

02_02_SpringMVC基于注解的应用

一、请求处理 1、常用注解 RequestMapping 作用&#xff1a;用来匹配客户端发送的请求&#xff08;用来处理URL映射&#xff0c;将请求映射到处理方法中&#xff09;&#xff0c;可以在类或者方法上使用。 用在类上&#xff0c;可以将请求模块化&#xff0c;避免请求方法中的…

网络编程(二)TCP编程 TCP粘包问题

文章目录 一、TCP网络编程&#xff08;一&#xff09;流程&#xff08;二&#xff09;相关函数1. socket2. bind3. listen4. accept5. connect 二、收发函数&#xff08;一&#xff09;send函数&#xff08;二&#xff09;recv函数 三、TCP粘包问题&#xff08;一&#xff09;将…