vue3.0读源代码第一篇 createApp
vue createApp的使用:
1 | const HelloVueApp = { |
createApp 做了哪些工作
- 调用
ensureRenderer函数,创建基本实例和初始化基础的组件数据 - 重写了
mount函数,寻找并挂载到指定的DOM元素上
1 | const createApp = ((...args) => { |
ensureRenderer 做了什么
单例模式, 调用createRenderer函数
1 | // lazy create the renderer - this makes core renderer logic tree-shakable |
createRenderer 做了什么
本身只调用了 baseCreateRenderer函数
(个人猜测,未证实)根据注释来看,它的作用估计是为了支持第三方使用vue扩展自己的东西,比入 uni-app?
1 | /** |
baseCreateRenderer 做了什么
baseCreateRenderer 这个函数简直可以用庞大来形容(2000+行代码),vnode diff patch均在这个方法中实现,回头我们再来细看实现,现在我们只需要关心他最后返回的什么
1 |
|
从源码中我们看到 baseCreateRenderer 最终返回 render hydrate createApp 3个函数, 但在 createApp 这个函数中我们本质上只需要返回 createApp 这个函数就好,这里返回了3个,说明其它两个会在别处用到,具体哪里能用到,后面我们再回头看
接着将生成的 render 传给 createAppAPI 这个真正的 createApp 方法,hydrate 为可选参数,ssr 的场景下会用到,这边我们也先跳过
createAppAPI 做了什么
它创建了基础实例的能力,挂在插件,注册组件,注册指令等
1 | export function createAppAPI<HostElement>( |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿德的小窝!