React
1.使用JSX
语法编写代码
2.webpack
打包时,JSX
通过babel
解析成js
3.js通过React.createElement
生成 vnode
4.初次渲染:ReactDOM.render(<App/>, container)
5.再次渲染:setState
异步执行,调用renderComponent
方法,重新执行实例的render
,生成newVnode
,与preVnode
执行diff
算法对比,重新patch
更新到html
页面中
Vue
1.使用模板
语法编写代码
2.webpack
打包时,解析Vue模板字符串
成 render
函数
3.用Object.defineProperty
修改变量的getter/setter
方法,实现响应式
,开始监听。并将 data 的属性/methods的方法等代理
到 vm 上
4.js通过执行 render
函数,获得vnode
。并在执行 render
函数过程中,用getter
收集依赖
5.初次渲染:通过 patch
将vnode
转化成真实DOM,显示页面
6.再次渲染:setter
监听到数据变化,触发 updateComponent
,重新执行render
函数,生成newVnode
,与preVnode
执行diff
算法对比,重新patch
更新到html
页面中
网友评论