Vue3源码调试-第三篇
前言
上两篇已经调试完packages/runtime-dom/src/index.ts下的createApp函数的第一行了,接下来我们看下一行
injectNativeTagCheck
首先说下这个__DEV__估计也是定义在dev.js下,又或者是哪里的,这里控制台输出是true,那我估计是因为现在是Dev环境下,所以为true
完了就要进入injectNativeTagCheck方法了
这里一看便知是给我们的app下的Config属性加多一个isNativeTag的属性,他的value是 一个方法,如代码所示,writable:false,意味着value不可更改
那其实可以从函数名称就能得知他的作用了 injectxxx,注入啥啥啥,下一个也是
injectCompilerOptionsCheck
isRuntimeOnly
映入眼帘的首先是这个方法,并且这里是整个方法的关键
这个isRuntimeOnly的方法位于packages/runtime-dom/src/components.ts下
它又依赖于complie变量
可以看到是未定义的,那猜测isRunTimeOnly的结果是true,看下调试如何
实在是没想到,输出结果是false,也就意味着compile在某个地方偷偷赋值了,有点可恶,经过我一顿搜索,找到了他的出处
packages/runtime-core/src/components.ts
packages.vue/src/index.ts
这个文件又被打包进global.js了,也就是只要引入global.js 就会触发这个赋值,好吧!
紧接着,下一步又从app解构出了mount,我决定在下一篇继续讲