小编在这里总结一些vue常见的面试题,希望能够帮助到你们的面试
1.你对vue中mvvm的模式设计有什么感想?
mvvm设计模式采用的双向绑定,当view发生变化,model会跟着变化,model发生变化,view也会同步,这样的话,我们就可以更多的关注逻辑,从而减少dom的操作,代码的耦合性也更好
2.vue中利用索引修改数组的时候,页面会跟着同步吗?
利用索引修改数组的时候,页面不会进行同步,此时应该利用vue.set的方法进行设置数据
3.vue首屏加载过慢如何解决?
1.路由懒加载,会将原来打包一个app.js的文件打包成多个文件 ,异步组件,按需加载2.webpack开启gzip压缩3.如果图片过多,开启图片懒加载4.使用cdn资源如果首页是登录页,做多入口
4.vue中v-if和v-show有什么区别?
v-if和v-show都会让元素显示和隐藏,但是v-if是通过移除和添加dom元素,v-show是通过display:none来实现隐藏
5.vue中的父子组件传值和兄弟组件传值都是如何实现的?
父向子传值,主要通过子组件的props,获取父组件绑定的数据。子向父传值,主要通过子组件利用$emit触发父组件上的事件。兄弟组件传值利用eventbus的方式,主要利用创建一个空的vm实例。
6.你之前有做过spa类型的项目吗?怎么实现的?
spa就是单页面应用程序,而单页面应用程序,主要依靠路由来实现,路由根据不同的hash值来展示不同的组件
7.vue中的单项数据流和双向数据绑定是什意思?
单项数据流是指数据是单向的,父组件的数据传递给子组件,只能单项绑定,不可以在子组件修改父组件的数据
8.双向数据绑定:是指数据和页面进行双向绑定,相互影响。
9.vue中双向数据绑定的原理是什么?
vue双向数据绑定的原理主要通过数据劫持Object.defineProperty和发布订阅模式实现的,通过Object.defineProperty监听数据发生变化然后通知订阅者(watcher),订阅者触发响应的回调
10.为什么在使用v-for的时候需要添加key属性
因为vue在更新渲染dom的时候是根据新旧dom数进行对比的,使用key来给每个节点做一个唯一标识,Diff算法就可以正确的识别此节点,找到正确的位置区插入新的节点。
11.为什么vue组件中的data必须是函数
因为如果默认为data是对象的话,对象为引用类型,这样的话,所有复用的组件都是引用的同一个数据,但是如果是函数的话,每次函数都会先创建一个新的数据,从而使每个组件的数据独立
12.你对vue生命周期的理解怎么样?
vue的生命周期就是vue实例的创建运行销毁的一个过程,在不同的阶段会触发不同的函数,这些函数也就是生命周期函数,比如create,在实例创建数据已经完毕,能够做一些数据的初始化,但是dom还没有渲染,mounted页面数据全部渲染完毕,可以在此函数内部操作dom
13.你知道webpack中babel、plugin、loader都有什么作用吗?
babel用来出来es6转es5,plugin配置webpack的一些插件,loader用来配置解析处理第三方文件的
14.keep-alive的作用
包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染。
15.你知道路由钩子吗?
路由钩子分为全局钩子、路由独享钩子、组件内钩子,全局钩子用来拦截所有的路由的,进行处理,路由独享钩子,本质上和后面的组件内钩子是一样的。都是特指的某个路由。不同的是,这里的一般定义在router当中,而不是在组件内。组件内钩子,是将钩子函数定义在组件内部了
16.项目中如果涉及多个组件数据共享你如何解决?
可以启用vuex
17.vuex中的五个属性都是什么? 有什么作用?
State 存储数据Getter 可以认为是 store 的计算属性,它的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。Mutation 更改 Vuex 的 store 中的状态的唯一方法是提交 mutationAction 包含任意异步操作,通过提交 mutation 间接更变状态Module 将 store 分割成模块,每个模块都具有state、mutation、action、getter、甚至是嵌套子模块
90%以上的人都要看的,前端开发工程师vue面试题干货集锦,轻松搞定HR,拿到高薪酬
最新推荐文章于 2022-05-19 10:58:58 发布