Vue2.x源码——Vue构造函数

在Vue源码中,关于Vue构造函数的部分是这样的:

//vue\src\core\instance\index.js
import { initMixin } from './init'
import { stateMixin } from './state'
import { renderMixin } from './render'
import { eventsMixin } from './events'
import { lifecycleMixin } from './lifecycle'
import { warn } from '../util/index'

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)
}

initMixin(Vue)
stateMixin(Vue)
eventsMixin(Vue)
lifecycleMixin(Vue)
renderMixin(Vue)

export default Vue

可以看到,Vue构造函数中的逻辑很简单:如果是在非生产环境下,并且没有使用new运算符来调用new,则在控制台中打印警告;然后调用this._init(options)进行初始化流程。

this._init又是在哪里定义的呢?
关于initMixin(Vue)、stateMixin(Vue)、eventsMixin(Vue)、lifecycleMixin(Vue)、renderMixin(Vue)这5个方法的作用主要是向Vue构造函数的原型上挂载一些方法,initMixin是挂载_init方法,stateMixin是与数据相关的方法vm.$watch、vm.$set、vm.$delete,eventsMixin是与事件相关的方法vm.$on、vm.$once、vm.$off、vm.$emit,lifecycleMixin是挂载方法vm._update、vm.$forceUpdate、vm.$destroy,renderMixin是挂载方法vm.$nextTick、vm._render。

你可能感兴趣的:(vue)