当前位置: 首页 > news >正文

Vue React

Vue 的源码主要分为以下几个部分:

主要涉及 响应式、虚拟 DOM、组件系统、编译器、运行时

├── packages/
│   ├── compiler-core/    # 编译器核心
│   ├── compiler-sfc/     # 处理 .vue 单文件组件
│   ├── compiler-dom/     # 处理 DOM 相关的编译逻辑
│   ├── reactivity/       # 响应式系统
│   ├── runtime-core/     # 运行时核心
│   ├── runtime-dom/      # 运行时 DOM 相关
│   ├── shared/           # 共享工具函数
│   ├── vue/              # Vue 入口
│   └── ...

React 源码结构:

整体架构可以分为 调度(Scheduler)、协调(Reconciler)、渲染(Renderer) 三个核心部分

可以从 React 入口、Fiber 架构、调度机制、Hooks 实现、Diff 算法 等方面解析其核心原理。

├── packages/
│   ├── react/            # React 核心 API(React.createElement、hooks)
│   ├── react-dom/        # 负责渲染到 DOM
│   ├── scheduler/        # 调度器,控制任务优先级
│   ├── react-reconciler/ # 负责 Fiber 树的协调和 Diff
│   ├── shared/           # 公共方法
│   ├── jest/             # 测试相关
│   └── ...

 Fiber 是 React 16 引入的核心数据结构,每个组件对应一个 Fiber 节点:

function FiberNode(tag: WorkTag,pendingProps: mixed,key: null | string,mode: TypeOfMode,
) {// 实例相关this.tag = tag;           // 组件类型(Function/Class/Host等)this.key = key;           // key属性this.elementType = null;  // 创建元素的类型this.type = null;         // 组件函数/类this.stateNode = null;    // 对应的真实DOM实例/类组件实例// Fiber树结构this.return = null;       // 父Fiberthis.child = null;        // 第一个子Fiberthis.sibling = null;      // 兄弟Fiberthis.index = 0;           // 在兄弟中的索引// 状态相关this.pendingProps = pendingProps;this.memoizedProps = null;this.updateQueue = null;  // 状态更新队列this.memoizedState = null;// 当前状态// 副作用this.effectTag = NoEffect;this.nextEffect = null;   // 下一个有副作用的Fiber// 双缓存技术this.alternate = null;    // 连接current和workInProgress树
}


http://www.mrgr.cn/news/96638.html

相关文章:

  • Qt基础:信号槽
  • PHP 开发API接口签名验证
  • npm webpack打包缓存 导致css引用地址未更新
  • 分享一个Drools规则引擎微服务Docker部署
  • mysql JSON_ARRAYAGG联合JSON_OBJECT使用查询整合(数组对象)字段
  • RKNN SDK User Guide学习要点
  • 蓝桥杯15届JAVA_A组
  • 【QT5 网络编程示例】TCP 通信
  • Kong网关研究
  • 【Unity】记录TMPro使用过程踩的一些坑
  • Spark,上传文件
  • HTML中数字和字母不换行显示
  • 数据结构和算法(十一)--图
  • 去中心化稳定币机制解析与产品策略建议
  • ros2--xacro
  • Python-八股总结
  • 【群智能算法改进】一种改进的蜣螂优化算法IDBO[3](立方混沌映射Cubic、融合鱼鹰勘探策略、混合高斯柯西变异)【Matlab代码#92】
  • 【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】
  • 【Pandas】pandas Series to_markdown
  • 六种光耦综合对比——《器件手册--光耦》