当前位置: 首页 > Web前端 > vue.js

Vue源码分析——Vue介绍

时间:2023-03-31 17:59:13 vue.js

文章首发于个人博客小灰灰空间。新人刚开始写博客记录生活,请多多指教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=(obj:T):T=>{observe(obj)returnobj}//初始化一些默认构造函数选项Vue.options=Object.create(null)ASSET_TYPES.forEach(type=>{Vue.options[type+'s']=Object.create(null)})//这用于标识“基础”构造函数,以在Weex的多实例场景中扩展所有普通对象//组件。//_base属性会在创建子组件构造函数时使用,//当创建子组件构造函数时,它是通过原型继承获得的_base(Vue构造函数)Vue.options._base=Vue//初始化内置组件扩展(Vue.options.components,builtInComponents)initUse(Vue)initMixin(Vue)initExtend(Vue)initAssetRegisters(Vue)}