// 运行时状态
vm = {
// 提供最外层的api
get a(){
// 闭包
// return compiler.data.a
return {
// 嵌套的
get(){
},
set(){
// 1. 解绑 -- 防止回调地狱
// 2. copyPaths -- 全量数据 --> undefined
// 3. 初始化迭代
// - emit("set")
// 1. 广播 -- 嵌套循环
// --- 告诉父组件修改
// --- 解决 嵌套组件修改的问题,this.a.b.c = 1
// --- 2. 重新进行绑定 --- 嵌套的,当前自身的事件流
}
}
},
on:{
set(){
// render 相关
/**
* - 获取了修改的属性
* - 获取到所有修改属性对应的指令了
*
* - 根据id和指令,触发渲染修改任务,防止重复刷新和重绘
*/
flush()
}
}
}
初始化
new Vue
- vm
- app -- compiler
- data
- 事件流
- a.b.c --> a.b
- observer
- 指令[渲染的内容,v-model/v-text,v-if,v-for] + 数据
- 任务队列
- rqa
- $data
flush: queue,一次进行执行 某一批数据的变化
change:a --》 dirs --> text/ el.nodeValue = value
change:a.b --> show / el.display