【Vue面试题系列】一

news/2024/11/16 4:40:26/

Vue3和Vue2的区别?

  1. 响应式系统:Vue3引入了Composition API,这是一种新的响应式系统。Composition API提供了更灵活和强大的组件状态和逻辑管理方式,使代码组织和重用更加方便。Composition API使用函数而不是对象,可以提高树优化(Tree Shaking)并减小打包体积。
  2. 更小的包体积:Vue3通过更好的Tree Shaking和更高效的运行时代码生成,相较于Vue2,打包体积更小。Vue3的响应式系统也经过优化,性能更好。
  3. 性能改进:Vue3采用了更快、更高效的渲染机制,得益于新的编译器。虚拟DOM的差异化算法经过优化,减少不必要的更新,提升渲染性能。
  4. 作用域插槽替代为< slot>:在Vue3中,作用域插槽的概念被更直观、更简化的< slot>语法所取代,使得在组件组合中定义和使用插槽更加容易。
  5. 引入Teleport组件:Vue3引入了Teleport组件,可以在DOM树中的不同位置渲染内容,用于创建模拟框、工具提示和其他覆盖层效果。
  6. 片段(Fragments):Vue3引入了一个名为片段的内置组件,允许将多个元素进行分组,而无需添加额外的包装元素。
  7. 更好的TypeScript支持:Vue3默认提供了更好的TypeScript支持,具有增强的类型推断和与TypeScript工具更好的集成。

自定义指令是什么?有哪些应用场景?

在Vue中,自定义指令是一种用于扩展Vue的模版语法的机制。通过自定义指令,你可以在DOM元素上添加自定义行为,并在元素插入、更新和移除时进行相应的操作。
自定义指令由Vue.directive函数定义,它接收两个参数:指令名称和指令选项对象。指令选项对象包含一系列钩子函数,用于定义指令的行为。
以下是一些常见的自定义指令的应用场景:

  1. 操作DOM:自定义指令可以用于直接操作DOM元素,例如修改元素的样式、属性、事件绑定等。你可以通过在指令的钩子函数中访问和操作DOM元素。
  2. 表单验证:你可以创建自定义指令来实现表单验证逻辑。通过自定义指令,你可以监听输入框的值变化,并根据自定义的验证规则进行验证,以便提供实时的反馈。
  3. 权限控制:自定义指令可以用于权限控制场景,例如根据用于权限来隐藏或禁用某些元素。你可以在自定义指令中根据用户权限进行条件判断,并修改元素的显示或行为。
  4. 第三方库集成:当你需要在Vue中使用第三方库或插件时,可以使用自定义指令来进行集成。你可以创建一个自定义指令,在其中初始化和配置第三方库,并在适当的时机调用库的方法。
  5. 动画和过渡效果:自定义指令可以与Vue的过渡系统一起使用,实现自定义的动画和过渡效果。你可以在自定义指令中监听过钩子函数,并根据需要操作元素的样式或类名来实现过渡效果。

说一下vue中,key的原理

在Vue中,key是用于帮助Vue识别和跟踪虚拟DOM变化的特殊属性。当Vue更新渲染真实DOM时,它使用key属性来比较新旧节点,并尽可能复用已经存在的真实DOM节点,以提高性能。
Vue在进行虚拟DOM的diff算法时,会使用key来匹配新旧节点,以确定节点的更新、移动或删除。它通过key属性来判断两个节点是否代表相同的实体,而不仅仅是根据他们的内容是否相同。这样可以保留节点的状态和避免不必要的DOM操作。

key的工作原理如下:

  1. 当Vue更新渲染真实DOM时,它会对旧节点进行比较,找出他们之间的差异。
  2. 如果两个节点具有相同的key值,则Vue认为他们是相同的节点,会尝试复用已存在的真时的DOM节点。
  3. 如果节点具有不同的key值,Vue会将其视为不同的节点,并进行适当的更新、移动或删除操作。

使用key可以提供更准确的节点识别和追踪,避免出现一些常见的问题,比如在列表中重新排序时导致的元素闪烁、输入框内容丢失等。

Vue常用的修饰符有哪些?分别用在什么应用场景?

修饰符是什么?
在程序世界里,修饰符是用于限定类型以及类型成员的声明的一种符号。
在Vue中,修饰符处理了许多DOM事件的细节,让我们不再需要花费大量的事件去处理这些烦恼的事情,而能有更多的精力专注于程序的逻辑处理

vue中修饰符有5种:表单修饰符、事件修饰符、鼠标按键修饰符、键值修饰符、v-bind修饰符

修饰符的作用
表单修饰符:在我们填写表单时候用的最多的是input标签,指令用的最多的是v-model。
lazy:在我们填完信息,光标离开标签的时候,才会将值赋予给value,也就是change事件之后再进行信息同步。
trim:自动过滤用户输入的首空格字符,而中间的空格不会过滤
number:自动将用户的输入值转为数值类型,但如果这个值无法被parseFloat解析,则会返回原来的值。

事件修饰符:事件修饰符是对事件捕获以及目标进行了处理,有如下修饰符:stop、prevent、self、once、capture、passive、native
stop:阻止事件冒泡 ==event.stopPropagation
prevent:组织了事件的默认行为,==event.preventDefault
self:只当在event.target是当前元素自身时触发处理函数
once:绑定了事件之后只能触发一次,第二次就不会触发
capture:使事件触发从包含这个元素的顶层开始往下触发
passive:在移动端,当我们在监听元素滚动事件的时候,会一直触发onscroll事件会让我们的页面变卡,因此我们使用这个修饰符的时候,相当于给onscroll事件整了一个.lazy修饰符
native:让组件变成像html内置标签那样监听根元素的原生事件,否则组件上使用v-on只会监听自定义事件

鼠标按钮修饰符:鼠标按钮修饰符针对的就是左键、右键、中键点击,left、right、middle
键盘修饰符:修饰键盘事件的,enter、tab、delete、ctrl、alt…
v-bind修饰符:主要是为属性进行操作。
sync:能对props进行一个双向绑定
props:设置自定义标签属性,避免暴露数据,防止污染HTML结构
camel:将命名变为驼峰命名。

Vue的响应式开发比命令式有哪些优势?

Vue的响应式开发相较于命令式开发有以下优势:

  1. 简化代码:在Vue中,通过将数据和模板绑定起来实现视图更新的自动化,从而避免了手动操作DOM的频繁和容易出错的操作。因此,可以大幅减少编写样板代码和调试代码所需的时间。
  2. 提高可维护性:使用Vue的响应式开发可以帮助我们更方便管理应用程序的状态,并对状态变化进行统一处理。这不仅可以提高代码的可读性和可维护性,还可以更方便地进行单元测试和集成测试。
  3. 增强用户体验:通过Vue的响应式开发,可以实现局部更新、异步加载等功能,从而提升用户体验。例如,在列表中添加或删除项目时,只需要更新相应的项目,而不是重新渲染整个列表。又比如,在加载大量图片时,可以通过异步加载和懒加载的方式,提高页面加载速度和用户体验。
  4. 支持复杂组件设计:Vue的响应式开发支持组件化设计,它能够轻松地将一个大型应用程序拆分成多个小型、可重用的组件。这些组件可以根据需要进行嵌套和组合,形成更为复杂和丰富的UI界面,而且每个组件都具有独立的状态和生命周期。

vue中$route和 $router有什么区别?

它们都是与路由相关的对象,区别如下:

  1. route是一个当前路由信息的对象,包括当前url路径、查询参数、路径参数等信息。route对象是只读的,不可以直接修改其属性值,而需要通过路由跳转来更新。
  2. router是vue router的实例对象,包括了许多用于导航控制和路由操作的API,例如push、replace、go、forward等方法。router可以用来动态地改变url,从而实现页面间的无刷新跳转。

route和router在功能上有所不同,route主要用于获取当前路由信息,router则是用于进行路由操作,例如跳转到指定的路由、前进、后退等。


http://www.ppmy.cn/news/773387.html

相关文章

HTML实现舔狗日记

演示 css html, body {background: radial-gradient(#181818, #000000);margin: 0;padding: 0;border: 0;-ms-overflow-style: none;}::-webkit-scrollbar {width: 0.5em;height: 0.5em;background-color: #c7c7c7;}/*定义滚动条轨道 内阴影圆角*/::-webkit-scrollbar-track {…

Css:高级技巧

1.精灵图使用 用ps的切片功能测量图片大小和位置 2.字体图标 3.CSS三角形 4.元素显示隐藏 5.鼠标样式 6.输入框input 轮廓线 7.防止文本域拖拽 8 vertical-align实现行内块和文字垂直居中对齐 9.单行文字溢出省略号显示 10.多行文字溢出省略号显示 11.布局技巧 1.相对定位会压…

OpenCV图像金字塔pyrDown下采样

#include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main() {// Load the original imageMat srcImage

Win10C盘清理(最简单)(清理最多)

大家一般都会遇到C盘变红饱满的情况&#xff0c;下面教大家十分简单的解决这个问题。 1.打开系统设置 2.打开"系统"&#xff0c;选择"存储" 3.选择“临时文件” 建议不用勾选&#xff08;懂的话可以直接选择勾选需要删除的&#xff09;&#xff0c;之间点…

win10清理C盘有效的几种方法

电脑用来一段时间后&#xff0c;C盘占的空间越来越大&#xff0c;频繁卡&#xff0c;花了一下午的时间&#xff0c;找到几种比较可行的方法&#xff0c;分享给大家。 方法一&#xff1a;使用电脑管家----清理垃圾 方法二【推荐】&#xff1a;我的电脑-----搜索选项-----选大小-…

win10 C盘优化清理

1.清理 Win10 升级留下的 Windows.old 文件夹、系统临时文件等&#xff1b; 2.转移虚拟内存到其他盘符&#xff08;非C盘的分区&#xff0c;比如D盘&#xff09;&#xff1b; 3.将临时文件转移到其他分区&#xff1b; 4.移动桌面至其他的盘区 5.关闭系统休眠功能。 长时间不适…

win10 C盘突然少了许多空间解决办法

1、删除系统升级产生的文件 C盘右键-->属性-->磁盘清理-->清理系统文件-->选中升级日志-->确定 2、清除系统睡眠文件 左下角窗口右键-->打开Windows PowerShell&#xff08;管理员&#xff09;-->在打开的窗口中输入powercfg -h off-->重启

C盘无损扩容 win10(亲测,良心,有用)

win10飞行堡垒7i7 电脑自带512SSD c盘无损扩容 &#xff08;远程给学弟扩无损扩c盘&#xff09; 1.安利傲梅分区助手&#xff08;好用&#xff09;&#xff08;下面是云盘链接&#xff0c;免安装版&#xff09; 软件包&#xff1a;&#xff08;下载即可用免安装&#xff09;…