顶层目录
除去配置文件和隐藏文件夹,根目录的文件夹包括三个:
1 | 根目录 |
packages 目录
目录下的文件夹非常多,我们来看下:
react (opens new window)文件夹
React 的核心,包含所有全局 React API,如:
- React.createElement
- React.Component
- React.Children
这些 API 是全平台通用的,它不包含ReactDOM
、ReactNative
等平台特定的代码。在 NPM 上作为单独的一个包 (opens new window)发布。
scheduler (opens new window)文件夹
Scheduler(调度器)的实现。
shared (opens new window)文件夹
源码中其他模块公用的方法和全局变量,比如在shared/ReactSymbols.js (opens new window)中保存React
不同组件类型的定义。
1 | // ... |
Renderer 相关的文件夹
如下几个文件夹为对应的 Renderer
1 | - react-art |
试验性包的文件夹
React
将自己流程中的一部分抽离出来,形成可以独立使用的包,由于他们是试验性质的,所以不被建议在生产环境使用。包括如下文件夹:
1 | - react-server # 创建自定义SSR流 |
辅助包的文件夹
React
将一些辅助功能形成单独的包。包括如下文件夹:
1 | - react-is # 用于测试组件是否是某类型 |
react-reconciler (opens new window)文件夹
我们需要重点关注 react-reconciler,在接下来源码学习中 80%的代码量都来自这个包。
虽然他是一个实验性的包,内部的很多功能在正式版本中还未开放。但是他一边对接 Scheduler,一边对接不同平台的 Renderer,构成了整个 React16 的架构体系。
其他文章
- [[React-旧的架构]]
- [[React-新的架构]]