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.mzph.cn/diannao/76217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目实战--权限列表

后端数据: 用表格实现权限列表 const dataSource [{key: 1,name: 胡彦斌,age: 32,address: 西湖区湖底公园1号,},{key: 2,name: 胡彦祖,age: 42,address: 西湖区湖底公园1号,}, ];const columns [{title: 姓名,dataIndex: name,key: name,},{title: 年龄,dataInd…

私有知识库 Coco AI 实战(一):Linux 平台部署

Coco AI 是一个完全开源、跨平台的统一搜索和生产力工具,能够连接各种数据源,包括应用程序、文件、Google Drive、Notion、Yuque、Hugo 等,帮助用户快速智能地访问他们的信息。通过集成 DeepSeek 等大型模型,Coco AI 实现了智能个…

【大模型】微调一个大模型需要多少 GPU 显存?

视频链接:微调一个模型需要多少GPU显存? up 主页:AI老兵tags: #GPU显存 #模型微调 #LoRA #QLoRA #参数计算 本集视频详细介绍了在模型微调过程中 GPU显存需求的计算方法,包括全量微调和高效微调(如 LoRA&am…

Lambda 表达式是什么以及如何使用

目录 📌 Kotlin 的 Lambda 表达式详解 🎯 什么是 Lambda 表达式? 🔥 1. Lambda 表达式的基本语法 ✅ 示例 1:Lambda 基本写法 ✅ 示例 2:使用 it 关键字(单参数简化) ✅ 示例 3…

全文 MLIR TOY -- Chapter2: 发出基本的 MLIR——把AST变成SSA的 MLIR Dialect IR

现在我们已经熟悉 Toy 语言和它的AST表示,现在让我们看看 MLIR 是怎样帮助编译 Toy 源程序的。 简介:多层中间表示 其他的编译器,像 LLVM,是提供一个固定的预定义类型和指令(通常是底层的像 RISC的指令)。对…

一个判断A股交易状态的python脚本

最近在做股票数据相关的项目,需要用到判断某一天某个时刻A股的状态,比如休市,收盘,交易中等,发动脑筋想了一下,这个其实还是比较简单的,这里我把实现方法分享给大家。 思路 当天是否休市 对于某…

LLaMA Factory微调后的大模型在vLLM框架中对齐对话模版

LLaMA Factory微调后的大模型Chat对话效果,与该模型使用vLLM推理架构中的对话效果,可能会出现不一致的情况。 下图是LLaMA Factory中的Chat的对话 下图是vLLM中的对话效果。 模型回答不稳定:有一半是对的,有一半是无关的。 1、未…

004 健身房个性化训练计划——金丹期(体态改善)

个人笔记使用。 01 肱骨前移 1.放松肩前束 2.放松肩后束 2.5kg哑铃侧展 泡沫轴上下滚 招财猫 肱二头 02 溜肩 宽距的坐姿划船 上顶

【已开源】UniApp+vue3跨端应用从0到1开发指南、uniapp+vue3模板应用

在跨端开发日益成为主流的今天,如何高效构建规范、可维护的企业级应用?本文以UniAppVue3* *TypeScript**为核心技术栈,手把手带你从零搭建高标准的跨平台项目。 通过本文,你将系统掌握: ✅ 环境配置:Node…

线程池设计

线程池实际上也是一个生产者消费者模型&#xff0c;线程池可以让多个线程去任务队列中取任务&#xff0c;执行任务&#xff0c;适用于需要大量的线程来完成任务且完成任务的时间较短。 #include "log.hpp" #include <mutex> #include <condition_variable&…

黑盒测试的正交实验法

背景: 利用因果图法、判定表法可以帮助我们对于输入数据的组合情况进行用例设计&#xff0c;但当输入数据的组合数量巨大时&#xff0c;由于不太可能覆盖到每个输入组合的测试情况&#xff0c;因果图法或判定表法可能就不太适用了&#xff0c;可以采用正交实验法、来合理地减少…

Linux内核编程

linux 系 统 在 2 4 4 0 上 的 启 动 过 程 分 三个 阶 段 u-boot的启动 1.先分清寄存器的分类 RAM的分类 ROM的分类 Mini2440开发板的存 储器配置 Mini2440开发板板载: 1. 64MB sdram; 2. 256MB nand-flash; 3. 2MB nor-flash; 4. s3c2440内部还有4KB iram; Mini2440的启…

黑盒测试的判定表法(能对多条件依赖关系进行设计测试点)

定义: 判定表是分析和表达多逻辑条件下执行不同操作的工具。就是指把所有的输入条件、所有可能采取的动作按表格列出来&#xff0c;每一种条件和动作的组合构成一条规则&#xff0c;也即一条用例。 1.判定表法的引用 等价类边界值分析法主要关注单个输入类条件的测试并未考虑…

从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.1.2ONNX格式转换与TensorRT部署

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 从零构建大语言模型全栈开发指南-第四部分:工程实践与部署4.1.2 ONNX格式转换与TensorRT部署1. 模型部署的核心挑战与价值2. ONNX格式转换技术详解2.1 ONNX技术栈组成2.2 转换流程与关键技术2.3 转换常…

免费下载 | 2025年网络安全报告

报告总结了2024年的网络安全态势&#xff0c;并对2025年的安全趋势进行了预测和分析。报告涵盖了勒索软件、信息窃取软件、云安全、物联网设备安全等多个领域的安全事件和趋势&#xff0c;并提供了安全建议和最佳实践。 一、报告背景与目的 主题&#xff1a;2024企业信息安全峰…

基于Real-Sim-Real循环框架的机器人策略迁移方法

编辑&#xff1a;陈萍萍的公主一点人工一点智能 基于Real-Sim-Real循环框架的机器人策略迁移方法本文通过严谨的理论推导和系统的实验验证&#xff0c;构建了一个具有普适性的sim-to-real迁移框架。https://mp.weixin.qq.com/s/cRRI2VYHYQUUhHhP3bw4lA 01 摘要 本文提出的Rea…

语义分析(编译原理)

1.什么是语义分析: 前两个阶段&#xff0c;词法分析是从字符到单词的一级识别&#xff0c;保证了每个单词的形式是正确的&#xff0c; 语法分析是由单词到语法树的一级识别&#xff0c;如果不符合语法规则就不能建树&#xff0c;因此保证了各个语法成分的构成是正确的 词法分…

蓝桥杯备考---》贪心算法之矩阵消除游戏

我们第一次想到的贪心策略一定是找出和最大的行或者列来删除&#xff0c;每次都更新行和列 比如如图这种情况&#xff0c;这种情况就不如直接删除两行的多&#xff0c;所以本贪心策略有误 so我们可以枚举选的行的情况&#xff0c;然后再贪心的选择列和最大的列来做 #include …

LeetCode hot 100—二叉搜索树中第K小的元素

题目 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 小的元素&#xff08;从 1 开始计数&#xff09;。 示例 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;1示例 2&#xff1a; …

【Java SE】Arrays类

参考笔记&#xff1a; Java中Arrays类(操作数组的工具)_java arrays-CSDN博客 Java——Arrays 类详解_java arrays类-CSDN博客 目录 1.Arrays类简介 2.Arrays.toString 2.1 使用示例 2.2 源码 3. Arrays.copyOf 3.1 使用示例 3.2 源码 4.Arrays.sort 4.1 默认排序使…