Vue面试题自检1-11

134 阅读3分钟

1.Vue的优点?

优点:轻量级、渐进式、组件化、响应式、虚拟DOM、单页面应用、数据与视图分离。

2.Vue的最大优势是什么?

1.可以进行组件化开发,使代码编写量大大减少,读者更加易于理解

2.可以对数据进行双向数据绑定

3.界面效果是响应式的

4.相比传统的页面通过超链接是实现页面的切换和跳转,Vue使用路由不会刷新页面

5.单页面应用,使页面局部刷新,可以不用每次跳转页面都要请求所有数据和dom渲染,这样大大提升了用户体验

6.使用第三方UI组件库可以节省很多开发时间,提高开发效率

3.在使用计算属性的时候,函数名和data数据源中的数据可以同名嘛?

可以同名,但data会覆盖methods,因为初始化数据顺序为computed,methods,data,props,如果其中有重名
的话,后面出现的属性自然就会覆盖之前挂载的属性。

4.Vue和jQuery两者之间的区别?

1.jQuery是直接操作DOM,在操作DOM频繁的场景里,jQuery的操作DOM行为频繁。

2.Vue是不直接操作DOM,Vue的数据与视图是分开的,Vue只需要操作数据即可;Vue利用虚拟DOM的技术,大大提
高了更新DOM时的性能,开发者只需要把大部分精力放在数据层面上;Vue集成的一些库,大大提高了开发效率,比
如Vuex、Vue-router等。

5.Vue2.0兼容IE哪个版本以上?

不支持IE8及以下,部分兼容IE9,完全兼容IE10以上,因为Vue的响应式原理是基于ES5的
Object.definePropety()实现的,这个方法不支持IE8及以下。

6.跟keep-alive有关的生命周期函数是哪些并描述下?

1.activated:被keep-alive缓存的组件使用时调用

2.deactivated:被keep-alive缓存组件切换时调用

7.说说对Vue中key的原理及对它的理解?

通过key给每一个vnode绑定一个唯一id,通过diff算法的优化策略,可以根据key,更准确, 更快的找到对应的
vnode节点,更高效的对比虚拟DOM中每个节点是否是相同节点,相同就复用,不相同就删除旧的创建新的。

8.Object.defineProperty 和 Proxy 的区别?

1.Proxy可以直接监听对象而非属性,可以直接监听数组的变化;

2.Proxy有多达13种拦截方法;

3.Proxy返回的是一个新对象,我们可以只操作新的对象达到目的,而Object.defineProperty只能遍历对象属性直接修改;

4.Object.defineProperty兼容性好,支持 IE9,而 Proxy 的存在浏览器兼容性问题。

9.style加scoped属性的用途和原理?

用途:防止全局同名CSS污染;

原理:在标签上填加唯一不重复的标记,通过data-v-hash 的方式,以保证唯一达到样式私有模块化的目的。

scoped样式穿透方法:/deep/ 、 >>> 、 ::v-deep

10.Vue组件如何进行传值?

1.父组件向子组件传值

在父组件中的子组件标签上绑定一个属性,挂载要传递的变量,在子组件中通过props来接受数据即可;

2.子组件向父组件传值

在子组件的方法中通过this.$emit("事件","参数")来触发在父组件中定义的事件并传递参数,在父组件中的子组
件标签上绑定一个事件来监听,有触发就调用其中的方法进行处理;

3.非父子组件之间的传值

可以通过Vuex实现;

4.父组件访问子组件的数据

在子组件中加上ref,然后通过this.$refs.ref方法即可访问到子组件的数据;

在父组件内部通过this.$children方法访问子组件的数据;

5.子组件访问父组件数据

子组件通过this.$parent方法或this.$root方法来访问到父组件或者根组件;

6.多层组件传值

在第一层组件模板内部使用v-bind="$attrs"传递属性,v-on="$listeners"传递触发的事件,下一层组件内部使
用this.$attrs可以访问到属性和this.$emit触发事件并传值。

11.讲一下组件的命名规范?

给组件命名有两种方式,一种是使用链式命名my-component,一种是使用大驼峰命名 MyComponent在字符串模
板中<my-component></my-component><MyComponent></MyComponent>都可以使用,在非字符串模板中最好
使用<MyComponent></MyComponent>,因为要遵循W3C规范中的自定义组件名 (字母全小写且必须包含一个连字
符),避免和当前以及未来的HTML元素相冲突。