vue 实例化几种方式_vue实例化都干了什么

本文详细剖析了Vue实例化的步骤,从new Vue开始,讲解了_init的执行、Mixin方法的作用,以及_data、$options等属性的初始化。接着,介绍了$mount的流程,包括模板编译成render函数、创建渲染watcher和patch过程。最后,讨论了子组件的创建和Vue.component的工作原理,阐述了组件的声明、extend方法和初始化过程。
摘要由CSDN通过智能技术生成

本文将结合例子进行一步步讲解,例子也会从简单到复杂逐步提升,这样理解的更深刻

复制代码

const app = new Vue({

template: '

child
',

})

app.$mount('#app');

复制代码

创建实例

首先先调用new Vue创建了一个实例,在core/instance/index中定义了Vue的构造函数

function Vue(options){

this._init(options)

}

initMixin(Vue)

stateMixin(Vue)

eventsMixin(Vue)

lifecycleMixin(Vue)

renderMixin(Vue)

复制代码

在该文件中定义了Vue构造函数,并且通过下面几个Mixin方法,在Vue原型上也定义了一些方法,为什么不用class因为class没有prototype这么灵活。

Mixin方法

方法

属性

initMixin

_init

-

stateMixin

$set、$delete、$watch

$data、$props

eventsMixin

$on、$off、$once、$emit

-

lifecycleMixin

_update、$forceUpdate、$detory

-

renderMixin

_render、$nextTick

-

调用_init方法

方法在core/instance/init.js中,

let uid = 0;

Vue.prototype._init = function (options){

const vm = this;

vm._uid = uid++;

vm._isVue = true;

if (options && options._isComponent) {

initInternalComponent(vm, options)

} else {

vm.$options = mergeOptions(

resolveConstructorOptions(vm.constructor),

options || {},

vm

)

}

vm._renderProxy = vm;

vm._self = vm;

initLifecycle(vm);

initEvents(vm);

initRender(vm);

callhook(vm, 'beforeCreate');

initInjections(vm);

initState(vm);

initProvide(v

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值