当前位置: 首页 > 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;       // 父Fiber
  this.child = null;        // 第一个子Fiber
  this.sibling = null;      // 兄弟Fiber
  this.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树
}

相关文章:

  • CSS 列表:实现网页布局的艺术
  • UE5学习笔记 FPS游戏制作28 显式玩家子弹数
  • 深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(理论部分)
  • MATLAB 控制系统设计与仿真 - 33
  • 【C#】构造协议帧通过串口下发
  • 为什么需要开源成分分析?库博同源分析工具介绍
  • CSS3学习教程,从入门到精通, 学院网站完整项目 - HTML5 + CSS3 实现(25)
  • 为什么制造企业需要用MES管理系统升级改造车间
  • html5时钟升级!支持切换深浅模式 Canvas实现现代化动态时钟
  • UniApp快速表单组件
  • Ansible内置模块之service
  • MOE-1 基本认识
  • 力扣HOT100之矩阵:54. 螺旋矩阵
  • 区块链技术之分布式数字身份:构建数字世界的信任基石
  • 青少年编程与数学 02-013 初中数学知识点 01课题、小学数学回顾
  • Ubuntu / Debian 创建快捷方式启动提权
  • 开发体育赛事直播系统:炫彩弹幕直播间界面技术实现方案
  • PE文件导入表解析
  • Spring-事务属性
  • 一条命令配置移动端(Android / iOS)自动化环境
  • 广播电视网站建设/百度指数查询平台
  • 装饰公司logo设计图片大全/seo培训教程视频
  • 网站后台换qq/电商培训机构有哪些哪家比较好
  • 中国上海门户网站公众号/大一html网页制作
  • b2b网站推广方式/网站推广在哪好
  • 专业做简历的网站/网站做优化