页面表现

实现

思路

  1. 对 data 进行数据劫持
  2. 分析 ast 数,找到元素绑定的 v-if 以及 @methods 事件函数
    1. 分别放进 showPool 和 eventPool 中(数据格式为 Map
      1. showPool 数据格式
        1. key: DOM对象
        2. value: { type: 'if/show', prop: data.xxx }
      2. eventPool 数据格式
        1. key: DOM对象
        2. value: methods.xxx 方法
  3. 绑定事件处理函数
  4. 初次渲染
    1. 如果遇到 v-if ,先给 showPool 中对应 value 加个 comment 注释节点用于后续占位
  5. 用户触发 methods 事件函数
    1. data数据更新
    2. 触发了属性 setter
    3. 进行 update 更新页面

函数

showPool:

Untitled

eventPool:

Untitled