vue-next仓库
vue-next
仓库源码
克隆下来之后yarn install
安装依赖,这里推荐webstorm
进行运行调试,查看packages/runtime-core
文件夹
调试
packages/runtime-core/__tests__/apiCreateApp.spec.ts
调试单测文件,
跳转到packages/runtime-core/src/renderer.ts
文件
createApp
该函数创建了一个实例。
1 | // packages/runtime-test/src/index.ts |
createRenderer
接受一个合并后的属性的属性,返回一个baseCreateRenderer
,而实现baseCreateRenderer
就在packages/runtime-core/src/renderer.ts
文件中,该文件长达2400行。
下面是该文件的源码缩略:
1 | function baseCreateRenderer( |
这个方法正是返回了createApp
的实现函数。
defineComponent
packages/runtime-core/src/apiDefineComponent.ts
进行了一个类型重载。对该文件翻译后。
1 | // 实现,关闭一些无用的操作 |
defineComponent是一个工具,在声明组件时主要用于类型推断。类型推断在组件选项中提供(作为参数提供)。返回值具有TSX /手动渲染函数/ IDE支持的人工类型。
借用掘金: 江米小枣tonylua 的话来说
在结合了 TypeScript 的情况下,传统的 Vue.extends 等定义方法无法对此类组件给出正确的参数类型推断,这就需要引入 defineComponent() 组件包装函数,其在 rfc 文档中的说明为:(参考顺藤摸瓜🍉:用单元测试读懂 vue3 中的 defineComponent)
mount
待更新…