React项目结构

但从React 构建后的文件来看可以分为react 和 react-dom这两个文件。
从React项目的源码组织结构来看React可以分为五大模块
- React
- Reconciler
- Scheduler
- Renderer
- Events
React.js这个包主要包含定义React组件所需的功能,它通常与React渲染器一起使用,例如用于web的react-dom,或者用于native环境的react-native.
React
React Component API:提供组件的API和生命周期,hooks的API等。
var React = {
  Children: {
    map: mapChildren,
    forEach: forEachChildren,
    count: countChildren,
    toArray: toArray,
    only: onlyChild
  },
  createRef: createRef,
  Component: Component,
  PureComponent: PureComponent,
  createContext: createContext,
  forwardRef: forwardRef,
  lazy: lazy,
  memo: memo,
  useCallback: useCallback,
  useContext: useContext,
  useEffect: useEffect,
  useImperativeHandle: useImperativeHandle,
  useDebugValue: useDebugValue,
  useLayoutEffect: useLayoutEffect,
  useMemo: useMemo,
  useReducer: useReducer,
  useRef: useRef,
  useState: useState,
  Fragment: REACT_FRAGMENT_TYPE,
  StrictMode: REACT_STRICT_MODE_TYPE,
  Suspense: REACT_SUSPENSE_TYPE,
  createElement: createElementWithValidation,
  cloneElement: cloneElementWithValidation,
  createFactory: createFactoryWithValidation,
  isValidElement: isValidElement,
  version: ReactVersion,
  unstable_ConcurrentMode: REACT_CONCURRENT_MODE_TYPE,
  unstable_Profiler: REACT_PROFILER_TYPE,
  __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: ReactSharedInternals
};
React Reconciler
React diff算法的核心,计算变化且应用变化到目标上,比如Fiber Reconciler
React Scheduler
这是用于在浏览器环境中进行协作调度的包。它目前由React内部使用
React Renderer
React-reconciler所需的一些功能的实现,react-reconciler 将根据需要调用这些函数来应用更新到目标上。不同平台Renderer实现不同, 有react-dom,react-art,react-test-renderer,react-native-renderer
React的设计使得Reconciliation和renderer是分开的阶段,所以React可以支持不同的目标平台,如DOM,native等 Reconcilation责计算树的哪些部分改变了,renderer使用该信息对应用程序进行实际上的更新渲染。reconciler其实是不同的平台共享的。
  
React Events
为了跨浏览器兼容和提高事件的性能,React 根据 W3C 规范来定义合成事件,拥有和浏览器原生事件相同的接口。
React项目的package目录
