按照vue基本原理,分别给class Vue定义两个方法,observe和compile,再添加一个更新视图的watcher,
- observe(),用来实现数据变化的监听,使用object.defineProperty,当有数据更新时,触发watch和订阅器watcher。
- compile(),用来解析DOM,获取每个节点及指令信息,初始化数据并创建watcher。
- watcher(),订阅器watcher,当数据发生变化时,调用原型方法update更新dom节点数据。
代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
class Vue {
constructor(options) {
this.el = document.quer