文章首发于个人博客小灰灰空间。新人刚开始写博客记录生活,请多多指教Vue的构造函数Vue本质上是一个函数,函数内部保证只能使用new关键字class来创建Vue实例函数Vue(options){if(process.env.NODE_ENV!=='production'&&!(thisinstanceofVue)){warn('Vue是一个构造函数,应该使用`new`关键字调用')}this._init(options)}定义Vue原型上的方法//定义Vue原型上的_init方法initMixin(Vue)//定义状态相关的方法stateMixin(Vue)//定义事件相关的方法eventsMixin(Vue)//定义事件相关的方法eventsMixin(Vue)//declarationcycle-relatedmethodontheprototype(_update$forceUpdate$destroy)lifecycleMixin(Vue)//在原型上定义渲染方法renderMixin(Vue)定义全局API,在core/index.js文件中调用initGlobalAPI初始化一些全局API,例如use、extend、mixin等。此外,在initGlobalAPI方法初始化Vue的默认选项,后面Vue实例初始化合并选项的时候会和Vue实例的默认选项合并。exportfunctioninitGlobalAPI(Vue:GlobalAPI){//configconstconfigDef={}configDef.get=()=>configif(process.env.NODE_ENV!=='production'){configDef.set=()=>{warn('不要替换Vue.config对象,而是设置单独的字段。')}}Object.defineProperty(Vue,'config',configDef)//暴露的util方法。//注意:这些不被视为公共API的一部分-除非您意识到风险,否则请避免依赖它们。Vue.util={warn,extend,mergeOptions,defineReactive}Vue.set=setVue.delete=delVue.nextTick=nextTick//2.6显式可观察APIVue.observable=
