Vue 简介
父子组件生命周期
父子组件的生命周期是一个嵌套的过程
- 渲染的过程
- 父 beforeCreate-> 父 created-> 父 beforeMount-> 子 beforeCreate-> 子 created-> 子 beforeMount-> 子 mounted-> 父 mounted
- 子组件更新过程
- 父 beforeUpdate-> 子 beforeUpdate-> 子 updated-> 父 updated
- 父组件更新过程
- 父 beforeUpdate-> 父 updated
- 销毁过程
- 父 beforeDestroy-> 子 beforeDestroy-> 子 destroyed-> 父 destroyed
computed / watch
相同点
- 基于 vue 的依赖收集机制
- 都是被依赖的变化触发,进行改变进而进行处理计算
不同点
- 入和出
- computed: 多入单出,多个值变化,组成一个值的变化
- watch: 单入多出,单个值的变化,进而影响一系列的状态变更
- 性能
- computed: 自动 diff 依赖,若依赖没有变化,会改从缓存中读取当前计算值
- watch: 无论监听值变化与否,都会执行回调
- 写法
- computed: 必须有 return 返回值
- watch: 不一定
- 时机上
- computed: 从首次生成赋值,就开始计算运行了
- watch: 首次不会运行,除非设置 immediate: true
v-for / v-if
- vue2: v-for > v-if 先循环 再判断
- vue3: 反过来
key
- 模板编译原理: template => dom
template => 正则匹配语法 —— 生成 AST: 静态 + 动态 => 转换 AST 为可执行方法 => render() => dom - dom diff
自定义指令
1 | directives: { |
mixin
应用: 抽离公共逻辑 (逻辑相同,但是模板不一样)
合并策略
- data 冲突时,以组件主体为优先
- 生命周期钩子会先后执行,先 mixin 后主体
- 递归合并,递归合并优先级仍以主体优先
extends
应用: 拓展独立逻辑
合并策略: 与 mixin 相同
- 合并优先级上 mixin > extends
- 回调优先级 extends > mixin
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Nanyin の 小屋!
评论