Vue3源码探究-构建流程(1)

本文详细探讨了Vue框架中createApp函数的内部工作原理,从源码层面解析了如何创建并挂载app对象。通过分析ensureRenderer和createRenderer函数,揭示了Vue中Renderer的生成及其对DOM操作的封装。同时,介绍了createAppAPI函数如何构造最终的app对象,包含的方法如use、mixin、mount等,帮助读者理解Vue应用的初始化过程。
摘要由CSDN通过智能技术生成

     我们都知道,在用vue构建项目时,都需要调用createApp函数来构建app的对象,该对象内有mount方法,可以帮助我们把对象挂载到我们想要挂载的dom节点上。那么这个app对象究竟是什么,它还包含了哪些属性,它又是怎么被创建出来的。我们来一起看一看

  我们自己写的createAPP 这个从vue中导出的方法其实从vue源码中runtime-dom包中的index.ts中导出,也就是上图这个方法,这个函数内部上来就调用了ensureRenderer(),ensure为确保的意思,也就是说这个函数是为了确保Renderer的生成,初始化的,它返回了一个对象,这个对象内有createAPP的方法,并且把参数传入,这个参数就是我们在外部调用createAPP()时传入的根组件。之后ensureRenderer()返回对象里的createAPP返回了一个app对象。所以要搞清这个app对象,我们需要看一下ensureRenderer()这个函数。

 我们可以看到这个函数返回了一个renderer变量,其实阅读源码我们能学到很多东西,就比如说这个命名,这个函数的功能是返回一个renderer,这个函数名叫ensureRenderer,并且可以看到注释,这个renderer变量的使用其实是一个闭包,它不会被销毁,是lazy create,只有在第一次进入的时候会执行createRenderer()函数,这个函数接收了一个变量,内含了一些操作dom的方法。这些方法是已经封装好了的,就在该文件夹的nodeOps.ts,patchProp.ts中。接下来我们来看一看createRenderer这个函数

 该函数返回baseCreateRenderer的返回值

 这里把刚刚传入的一些操作dom ,props的方法都解构了

最终这个函数返回了该对象。并且在上面定义了一系列方法。回到一开始

我们调用的这个方法就是createAppAPI(render,hydrate)的返回值。这里用了函数的科里化。所以要知道createAPP(...arg)返回的app对象究竟是什么,我们得看一些createAppAPI这个函数。

这个函数返回createApp(),至此,我们终于拿到了真正生成app的函数了

这个函数定义了一个app对象,这个app对象里面有一些私有变量和一些我们比较熟悉的方法。比如use,mixin,mount,component...至此内存中有了这个app对象和在renderer定义的一系列方法,包括render方法。

注:本人水平有些,写文章的目的是理清思路,也希望能给部分人带来一些帮助。如有误,请批评指教。

 

 

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值