#v-for 中用key
原理:必须要用key 因为diff算法中根据tag和key来判断是不是同一个samenode
效果:减少渲染次数 提升渲染性能(优化diff算法)
#单组件生命周期()图
#组件通讯(常见)
props $emit
自定义事件 event.$on event.$off event.$emit
vuex
@组件渲染与更新的过程(图)
#组件的data为什么是函数?
.vue编译后实际上是一个class 使用时候只是实例 如果不是函数的话 大家就共用data了
#对MVVM的理解 (图)
#computed 有缓存 提高性能
#ajax放在那里 mounted 渲染完成 加载完成
#如何把组件所有的props传递给子组件
方法 v-bind = "$prpos"
如何自己实现一个v-model
子组件里 对象 model {prop: text., event:'change"} 子组件用 :value=text @input=emit change
多组件抽离逻辑
mixin
何时使用异步组件
大组件 路由异步加载(切换路由)
优化性能
何时使用keep-alive
缓存组件 不需要重复渲染
静态tab页面
优化性能
何时用befordestory
解绑自定义事件 event.$off
清除定时器
解绑自定义dom事件 如 window.scroll
什么是作用域插槽
子组件中有data 我们想在父组件中的slot使用data
子组件在slot中用属性 父组件用 v-slot=‘子组件属性’
vuex中action和mutation区别
action中可以处理异步
mutation每次做一个操作
action整个多个mutation集合
VUE如何监听数组变化
首先是不能 重新定义原型 重写push pop (proxy解决)
响应式原理
监听data的变化
组件渲染与更新的流程
DIff算法事件复杂度
从n3 优化n 1.只比较同一级别 2.tag和key不同直接销毁 3.tag和key相同 upadatachildren
diff算法过程(snabbdom中)
patch(el node)patch(node newnode)
patchVnode addVnode removeVnode
updatachildren(key的重要性 判断是不是同一个节点)
Vue为什么是异步渲染 $nexitick有何用
异步渲染(合并data修改 异步渲染 提高性能)
异步渲染 没有直接dom修改拿到dom变化 就是用触发回调里面拿
vue常见性能优化
合理使用 v-show v-if
合理使用computed
v-for中加key 避免和v-if同时使用
自定义dom事件 自定义事件及时销毁
合理使用异步组件
合理使用keep-alive
data层级不要太深(响应式监听是一次完成的 响应式监听递归次数太多)
使用vue-loader在开发中使用模板编译(预编译)
webpack层面的优化(后面补充)
图片懒加载?
使用ssr