建设工程专注在哪个网站,网页qq邮箱怎么发文件,wordpress 金币,网站开发怎么使用维语1#xff0c;根据vue工程package.json配置文件查看scripts命令#xff0c;找到build命令执行的js文件
2#xff0c;根据构建执行的js文件继续跟进#xff0c;找到主入口文件
3#xff0c;从主入口文件直接分析主干代码#xff0c;追踪export的Vue对象
4#xff0c;跟…1根据vue工程package.json配置文件查看scripts命令找到build命令执行的js文件
2根据构建执行的js文件继续跟进找到主入口文件
3从主入口文件直接分析主干代码追踪export的Vue对象
4跟进到最内层发现Vue对象其实就是一个构造函数构造函数内调用了_init()方法。因此在我们new Vue(options)的时候实例化Vue执行就会调用此方法
5在vue加载完成之后初始化了initMixin, stateMixin, eventsMixin, lifecycleMixin, renderMixin这5个方法
6initMixin中定义了_init函数这个函数的核心流程是 合并options配置挂载到vm.$options 调用initLifecycle初始化vm.$parent, vm.$root, vm.$children, vm.$refs 等属性值 调用initEvents初始化事件系统实际上是v-on和的注册的事件 调用initRender初始化渲染通过执行createElement函数执行并返回虚拟DOM 调用beforeCreate钩子 调用initInjections函数初始化父子组件的inject和provide二者成对出现 调用initState初始化state, props, methods, computed, watch等将data, props都挂载到vm._data, vm._props上设置访问数据代理访问this.xx就是访问vm.xx 调用initProvide函数同initInjections 调用created钩子。 7stateMixin中对_datavm.$data, _propsvm.$props使用 Object.defineProperty 添加响应式
8eventsMixin中在Vue原型上定义$on, $once, $off, $emit 事件方法并返回vm
9lifecycleMixin中在Vue原型上定义 _update, $forceUpdate, $destroy方法
10renderMixin中在Vue原型上定义$nextTick方法和_render方法该方法会调用vm.$createElement创建虚拟DOM