1.vuex 的 getter 特性是什么
getter 可以对 state 进行计算操作,它就是 store 的计算属性
虽然在组件内也可以做计算属性,但是 getter 可以在多给件之间复用
如果一个状态只在一个组件内使用,是可以不用 getters
2.vue2.x中如何监测数组变化
使用了函数劫持的方式,重写了数组的方法,Vue将data中的数组进行了原型链重写,指向了自己定义的数组原型方法。
这样当调用数组api时,可以通知依赖更新。如果数组中包含着引用类型,会对数组中的引用类型再次递归遍历进行监控。
这样就实现了监测数组变化
3.可以被vue拦截到的数组方法以及不能被拦截到的数组方法?
会:push() pop() shift() unshift() splice() sort() reverse() 会检测变动 进行页面更新
不会:filter() concat() slice() map() 新数组替换旧数组 不会改变原数组,页面不更新 不会被拦截
Vue.set / this.$set 强制更新
4.Vue性能优化?
- 尽量减少data中的数据,data中的数据都会增加getter和setter,会收集对应的watcher
- SPA 页面采用keep-alive缓存组件
- 在更多的情况下,使用v-if替代v-show
- 使用路由懒加载、异步组件
- 第三方模块按需导入
- 图片懒加载
5.谈谈单页面(SPA)的理解
SPA( single page application )仅在 Web 页面初始化时加载相应的 HTML、 JavaScript 和 CSS。
一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转
而页面的变化是利用路由机制实现 HTML 内容的变换,避免页面的重新加载。