从页面渲染的角度理解Vue的源码实现(1)

本文从页面渲染的角度探讨Vue 2.6.11的源码实现,详细解析了initMixin、stateMixin、eventsMixin、lifecycleMixin和renderMixin在Vue实例创建过程中的作用。通过对Vue原型的构建,理解Vue实例创建时如何调用_init方法,并介绍了_stateMixin中定义的数据和方法,eventsMixin中事件相关的API,lifecycleMixin中的更新和删除方法,以及renderMixin中生成VNode树和渲染辅助函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结合《深入浅出Vue.js》这边书完成了Vue 2.6.11版本的源码阅读,收获还是很大的,之前在部门小组内进行了分享,感觉自己虽然懂了一部分,但是还是没办法成体系的输出自己的收获,打算通过这一系列文章进行分享后,能理解更透彻。

Vue的原型构建

在我们的Vue项目入口文件中,很容易看到

import Vue from 'vue'
...
const app = new Vue({
  router,
  store,
  render: h => h(App)
})
app.$mount('#app')

这样的代码,创建一个Vue实例并挂载到id为app的元素下。那么在创建Vue实例的时候,发生了什么?

让我们直接从源码开始解析!

在Vue2.0中,Vue对象是采用es5的写法去声明的,我们在引入Vue时,执行完initMixin、stateMixin这些方法,完成了对Vue原型的构建,最后在创建实例时,调用了_init方法。

1、initMixin

在这里插入图片描述
为入参的原型添加一个_init方法。哦,原来创建Vue实例的时候,就是调用了这里的_init方法。

2、stateMixin

在这里插入图片描述
是不是看着有点熟悉?
this.$watch、this.$set、this.$delete?对了stateMixin 就是为Vue原型绑定了这3个常用方法。并且通过Object.defineProperty方法,将 $data、$props指向了实例中的_data、_props属性。

3、eventsMixin

在这里插入图片描述
如果说stateMixin是针对属性的功能绑定,那么eventsMixin就是对我们常用的事件相关api的绑定。

4、lifecycleMixin

在这里插入图片描述
这个就容易理解了,给原型绑定更新和删除的方法。
提前剧透下,_update方法就是我们常说的Vue diff算法开启的入口,调用后就会进入diff阶段

5、renderMixin

在这里插入图片描述
nextTick就不多说了,Vue面试必问!

_render函数作用就是生成VNode树。

installRenderHelpers函数是在入参对象上,绑定一系列渲染辅助函数在这里插入图片描述

总结

创建完成Vue实例后,还需要通过$mount方法,才能让我们在页面看到Vue内容,那么$mount方法做了什么,创建的实例又是什么样子的呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值