vue面试问题

 1. vue响应式原理

参考: https://www.cnblogs.com/fundebug/p/responsive-vue.html
Object.defineProperty实现
Vue通过设定对象属性setter/getter方法来监听数据的变化,通过getter进行依赖收集,
而每个setter方法就是一个观察者,在数据变更的时候通知订阅者更新视图.

 

2. vue的生命周期

beforeCreate,created
beforeMount,mounted
beforeUpdate,updated
activated,deactivated
beforeDestory,destoryed

activated: 当页面重新显示的时候执行. 搭配keep-alive,localStorage和临时变量做页面性能优化.
deactivated: 当页面即将被隐藏或替换其他页面时执行. 可以用来解绑在activated上绑定的全局事件.

mounted: 是挂载vue实例后的钩子函数,钩子在主页挂载时执行一次. 如果没有缓存的话,再次回到主页时,此函数还会执行.
activated: 是组件被激活后的钩子函数,每次回到页面都会执行.

 

3. vue $nextTick原理,事件机制

参考: https://www.jianshu.com/p/a7550c0e164f

 

4. 组件传值

参考: https://juejin.cn/post/6844903845642911752
var Event = new Vue()
Event.$emit(事件名, 数据)
Event.$on(事件名, data => { })

 

5. vuex

参考: https://vuex.vuejs.org/zh/

 

6. vue-router

参考: https://router.vuejs.org/zh/

 

7. computed 和 watch 的区别

计算属性computed:
(1) 支持缓存,只有依赖数据发生改变,才会重新进行计算.
(2) 不支持异步,当computed内有异步操作时无效,无法监听数据的变化.
(3) computed属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过的数据通过计算得到的.
(4) 如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对一或者一对一,一般用computed.
(5) 如果computed属性属性值是函数,那么默认会走get方法; 函数的返回值就是属性的属性值; 在computed中的属性都会有一个get和一个set方法,当数据变化时调用set方法.

侦听属性watch:
(1) 不支持缓存,数据变,直接会触发相应的操作.
(2) watch支持异步.
(3) 监听的函数接受两个参数,第一个参数是最新的值,第二个参数是输入之前的值.
(4) 当一个属性发生变化时,需要执行对应的操作,一对多.

 

8. v-if 和 v-show 的区别

v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐

 

9. 开发中的跨域问题

参考: https://www.cnblogs.com/soyxiaobi/p/9616011.html

 

10. promise

参考: https://blog.csdn.net/zhaoxiang66/article/details/81017373

 

11. 数组去重

参考: https://www.cnblogs.com/zsp-1064239893/p/11196501.html

 

12. 深拷贝和浅拷贝

参考: https://www.jianshu.com/p/35d69cf24f1f

上一篇:编写 Vue v-for 循环更优雅的 方式


下一篇:element-ui 表格 计算属性 scope.row