2023年3-4月面试Vue相关面试题总结

1.vue的生命周期有哪些分别在做了什么

beforeCreate  创建vue实例,注测data,method,proxy等方法

created 将data,method等变量方法注入到vue实例,可访问到

beforeMount  将templete编译虚拟成dom,生成render函数

mounted  将节点挂载到页面上可进行dom相关的操作

beforeUpdate data数据改变,视图未更新

updated data数据改变后视图更新(不可在该生命周期修改data,会陷入死循环)

vue2:

beforeDestroy 组件销毁前一般在该生命周期解绑全局注测的方法和变量

destred  组件已销毁

vue3以上两个周期名字改变为以下两个

beforeUnmount 组件销毁前一般在该生命周期解绑全局注测的方法和变量

unmounted 组件已销毁

2.vue的组件通信方式有哪些

父子组件通信:props和$emit,$parent,

祖孙组件通信:provide,inject

vuex,eventbus可现实任何组件通信,

refs直接访问组件,$attrs属性透传

3.vuex有哪些属性和方法分别用来做什么的

state  data属性

getter 计算属性

mutition 同步方法$commit触发

actions 异步方法,对mutition进一步封装, $dispach触发

mudule 将vuex分包

4.wacth和computed的区别是什么

watch检测数据的改变做相应操作和处理逻辑

computed 某个数据依赖多个数据,任何数据改变都会自动计算

5.v-if和v-show的区别是什么

 这个问题比较基础,v-if是dom元素的生成和删除的切换,v-show不改变dom,只是样式的显示和隐藏

6.vue的双向绑定是怎么实现的

双向绑定分为

视图改变数据改变,  是对模板上的指令v-model和{{}} 等进行了解析,然后将视图上输入的数据给更新到data里面

数据改变视图改变, 是对数据进行了劫持,vue2使用的defineProperty,vue3使用的proxy,当数据改变时触发set方法中的订阅者方法,然后改过的数据生产虚拟dom跟之前的虚拟dom用diff算法做对比,找出差异的地方继续更新。

7.vue父组件和子组件的生命周期执行顺序是怎样的

父组件beforeMount,父组件的mounted,父组件的beforeMount,进行到这个节点是要将templete通过complier编译成结构化数据传给成render函数,这个时候会遇到挂载到页面上的子组件。然后开始执行子组件的beforeCreate,created,beforeMount,mounted,执行完之后再执行父组件的mounted

8.vueRouter有几种模式分别是什么,实现的原理是什么

hash模式,  默认路由模式,支持所有浏览器,使用的window.hash方法

history模式,  使用的h5的history API方法,利用history.pushState   方法实现跳转

abstruct模式, 支持所有 JavaScript 运行环境,一般用在nodejs环境中当检测没有浏览会       强制进入这个模式

9.vue2和vue3的区别有哪些

 双向绑定原理改变,vue2使用的defineProprotey, vue3使用proxy

 vue3的diff算法进行了优化,使用了最长递增子序列

 vue3的编码方式改变,使用compsitionAPI的方式进行编码

10.vue的列表加key有什么作用

  给列表绑定key,会让页面更新速度更快。因为vue使用的是虚拟dom,当数据改变时对比两个虚  拟dom数据,如果有key直接对比key值是新增还是删除,可以进行精准的作。如果没有key的话就会进行逐一的对比。如果key绑定的是列表的index给没有绑定是样的效果

11.vue的计算属性如何绑定给v-model

 给计算属性添加一个set方法,

 通常情况下计算属性是依赖多个属性计算出来的值。但是当直接改变计算属性,而不是通       过其他依赖属性改变时,需要给计算属性设置一个set方法 用来改变其原本依赖属性的值

12.vue的路由守卫有哪些钩子函数分别作用是什么

路由守卫参数通常有三个to即将进入的路由对象, from 当前导航正要离开的路由,next回调函数必须执行才能完成跳转

全局路由守卫

beforeEach,全局前置守卫,

afterEach 全局后置守卫

路由独享守卫  beforeEnter 用法和参数跟全局守卫一一致

组件内的路由守卫

beforeRouterEnter,  渲染改组件前调用,组件实例还未创建,无法使用this,

beforRouteUpdate  当前路由改变但是组件复用时会调用

beforeRouteLeave 导航离开该组件时调用可以访问this

13.vue的diff算法是什么样的

vue的diff算法是双向四指针对比,只对比同级节点,如果同级节点不一致直接删除不关 心子节点是否改变。vue3增加了最长递增子序列的算法优化。

以上是我最近面试总结关于vue相关的面试题,某些问题的答案可能还不够完善,欢迎补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloReact

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值