VUE2.6.10——Vue对象

  • /src/core/index.js
  • /src/core/instance/index.js
function Vue (options) {
  if (process.env.NODE_ENV !== 'production' &&
    !(this instanceof Vue)
  ) {
    warn('Vue is a constructor and should be called with the `new` keyword')
  }
  this._init(options)  
}
/*
*    Vue.prototype._init
*/
initMixin(Vue)      
/*
*     Object.defineProperty(Vue.prototype, '$data', dataDef)
*     Object.defineProperty(Vue.prototype, '$props', propsDef)
*     Vue.prototype.$set = set
*     Vue.prototype.$delete = del
*     Vue.prototype.$watch
*/
stateMixin(Vue)   
/*
*    Vue.prototype.$on
*    Vue.prototype.$once
*    Vue.prototype.$off
*    Vue.prototype.$emit
*/
eventsMixin(Vue)        
/*
*    Vue.prototype._update
*    Vue.prototype.$forceUpdate
*    Vue.prototype.$destroy
*/
lifecycleMixin(Vue)    
/*
*    RenderHelpers...
*    Vue.prototype.$nextTick
*    Vue.prototype._render
*/
renderMixin(Vue)      

Vue.prototype._init

initLifecycle(vm)   // 变量init 并把当前实例添加到parent的$children里
initEvents(vm) // _events变量存放事件
initRender(vm)  //defineReactive  $attrs $listeners
callHook(vm, 'beforeCreate')   //函数钩子
initInjections(vm) // provide 和 inject 主要为高阶插件/组件库提供用例。并不推荐直接用于应用程序代码中。
initState(vm)  // initProps、initMethods、initData、initComputed
initProvide(vm) // resolve provide after data/props
callHook(vm, 'created')

vm.$mount  //vm._render -> _update 渲染

声明周期钩子

beforeCreate -> created -> beforeMount -> mounted

参考资料

Vue provide / inject

    原文作者:xuriliang
    原文地址: https://segmentfault.com/a/1190000019435584
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞