摘要: class MVVM { constructor(options) { // 挂载在实例 this.$el = options.el; this.$data = options.data; // 如果有模版就编译 if (this.$el) { // 数据劫持 new Observer(this.$ 阅读全文
posted @ 2020-05-06 17:22 前端小厨-美食博主 阅读(151) 评论(0) 推荐(0) 编辑
摘要: Watcher 通过新值和老值进行对比 如果发生变化 就调用更新方法 class Watcher { constructor(vm, expr, cb) { this.vm = vm; this.expr = expr; this.cb = cb; // 获取一下老值 this.value = th 阅读全文
posted @ 2020-05-06 17:16 前端小厨-美食博主 阅读(140) 评论(0) 推荐(0) 编辑
摘要: Compile 同样以Vue为例编译元素三个步骤:1. 先把真实DOM放入内存中 fragment;2.编译 => 提取元素节点含有v- v-model 文本节点{{}};3. 把编译好的fragment 放入页面 class Compile { constructor(el, vm) { this 阅读全文
posted @ 2020-05-06 17:12 前端小厨-美食博主 阅读(335) 评论(0) 推荐(0) 编辑
摘要: Observer MVVM的理论,就不去赘述了。 以Vue中的Observer 数据劫持来说 其主要使用ES5中的Object.defineProperty(vue3.x中表示弃用Object.defineProperty使用更快的原生proxy) 去给对象的属性添加get和set,废话不多说上代码 阅读全文
posted @ 2020-05-06 16:56 前端小厨-美食博主 阅读(275) 评论(0) 推荐(0) 编辑