# setup

准备工作

为了实现这个功能。需要拆分下功能点,循序渐进的实现,避免无从下手的困境,同时建议同时参考 vue 的源码。

需要实现的有:

  • Reactive
  • Observer
  • Watcher
  • Dep

为了观察数据变化,我们先写个简单的渲染函数,方便查看效果,如下:

var render = (data) => {
    var $app = document.querySelector('#app');
    $app.innerHTML = Object.keys(data)
      .map(key => {
        return `<p>${key}: ${data[key]}</p>`;
      })
      .join('');
};

// 初始化调用一下
render({ count: 1 });

// size属性里也调用一下,确保数据更新时,界面更新
{
    // ...
    computed: {
        size() {
            const size = this.count + 1;
            render({
                count: this.count,
                size,
            });
            return size;
        }
    }
}
上次更新于: 7/19/2022, 2:57:05 PM