Vue源码二次解析【理论】3------Vue初始化全过程-----挂载过程

本文对Vue实例挂载过程进行源码解析。先缓存原型方法并重新定义,对挂载节点有限制,若未定义相关方法会进行转换。还拆分挂载方法参数,介绍其调用流程,最终更新DOM,同时给出了相关js源文件的github地址。

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

Vue 中是通过 $mount 实例方法去挂载 vm 的。整个过程是先缓存原型上的 $mount 方法,然后重新定义该方法。首先,它对 el 做了限制,Vue 不能挂载在 bodyhtml 这样的根节点上。接下来的是判断有没有定义render 方法。如果没有定义 render 方法,则会把 el 或者 template 字符串转换成 render 方法。整个大的过程如下:

 

接下来拆分$mount ,从$mount 方法传入 的2 个参数看起,第一个是 el,它表示挂载的元素,可以是字符串,也可以是 DOM 对象,如果是字符串在浏览器环境下会调用 query 方法转换成 DOM 对象的。第二个参数是和服务端渲染相关,在浏览器环境下我们不需要传第二个参数。接着$mount 方法会去调用 mountComponent 方法,mountComponent 方法的核心就是先调用 vm._render 方法生成虚拟 Node,再实例化一个渲染Watcher,在它的回调函数中会调用 updateComponent 方法,最终调用 vm._update 更新 DOM。


整个过程的js源文件的github地址为:

https://github.com/vuejs/vue/blob/dev/src/platforms/web/entry-runtime-with-compiler.js

https://github.com/vuejs/vue/blob/dev/src/core/instance/lifecycle.js

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值