实现一个简单的双向绑定, 基本包括以下内容:
1 | export default class MyVue { |
基本类
在实现的过程中我们需要新建几个class:
- Watcher 观察者类 用来监听值的变化
- Dep 预定类
- 用sub储存所有watcher,以便统一更新
- 用Dep.target标记当前正在更新的值
- Compiler 编译类 用来绑定视图相关操作
Watcher 用来监听值的变化
实现如下
1 | import {popTarget, pushTarget} from './dep' |
Dep
1 | import Watcher from './watcher' |
Compiler 编译类
1 | export default class Compiler { |
有了这几个类, 我们的双向绑定基本就实现了, 下面看下具体是怎么使用这几个累的
构造函数
1 | export default class MyVue { |
这样一个简单的仿vue的双向绑定就实现了,完整代码可见https://github.com/snow-snow/myVue