实例讲解vue源码架构

2020-06-13 10:42:38易采站长站整理

做了Vdom

initRender函数
给vm添加了_c和 $createElement用来渲染的方法

state


if (!(key in vm)) {
proxy(vm, `_props`, key)
}

给vue属性做代理,访问this.a可以得到this.data.a 的值


export function initState (vm: Component) {
vm._watchers = [] const opts = vm.$options
if (opts.props) initProps(vm, opts.props)
if (opts.methods) initMethods(vm, opts.methods)
if (opts.data) {
initData(vm)
} else {
observe(vm._data = {}, true /* asRootData */)
}
if (opts.computed) initComputed(vm, opts.computed)
if (opts.watch && opts.watch !== nativeWatch) {
initWatch(vm, opts.watch)
}
}

给数据做监听

stateMixin函数

添加原型对象


Vue.prototype.$set = set
Vue.prototype.$delete = del

其他

src/compiler 做了编译处理

core/componetd 做了keep-alive

core/util 封装了通用方法

core/vdom vdom算法

以上整体架构分析完毕