<!-- title: 细粒度响应式Signals精读 -->
<!-- domain: programming -->

# 细粒度响应式 Signals 精读：前端框架的「收敛演化」

## 概述

本期聚焦 Round 2 的**编程与开发**领域。如果说过去十年前端的战争是「框架之争」（React vs Angular vs Vue），那么 2025—2026 年真正的暗线只有一个——**细粒度响应式（Fine-Grained Reactivity）的全面收敛**。

一个有趣的现象被多位演讲者称为「前端框架的蟹化（carcinization）」：就像自然界中甲壳类动物反复独立演化出相似的蟹形结构一样，SolidJS、Svelte 5、Vue 3.5、Angular 17+、Preact 乃至 React 生态，正**独立却趋同地**奔向同一个原语——**Signal（信号）**。Signal 不再是某一个小众库的专利，而是成为整个前端世界共享的底层心智模型。

本期精选 7 个高质量 YouTube 视频/演讲，从 SolidJS 之父 Ryan Carniato 的哲学思辨，到 Alien Signals 源码级拆解，再到 Angular Zoneless 实战与 Svelte 5 Runes 全景指南，带你彻底搞懂：**为什么 Signal 会赢，以及它到底解决了 Virtual DOM 没解决好的什么问题。**

## 频道/视频对比表

| # | 视频/频道 | 作者/频道 | 核心焦点 | 难度 | 实用度 |
|---|----------|----------|---------|------|-------|
| 1 | Beyond Signals | Ryan Carniato (@ryansolid) | 信号之后的未来：serials、stores 的边界 | ★★★★ | ★★★★ |
| 2 | It's Time To Talk About Signals | Julian Burr (NDC Sydney 2026) | 框架蟹化与信号心智模型 | ★★★ | ★★★★★ |
| 3 | Fine Grained Reactivity with Signals | 社区精选 | 信号图、依赖追踪、推拉求值原理 | ★★★★ | ★★★★ |
| 4 | The Front-end Frameworks Guide 2026 | 综合盘点频道 | React Compiler 稳定 + 四框架定位 | ★★ | ★★★★★ |
| 5 | Zoneless Angular: Change Detection with Signals | Angular 实战频道 | 告别 Zone.js，signal() 驱动变更检测 | ★★★ | ★★★★★ |
| 6 | The Svelte 5 Reactivity Guide | Svelte 教学频道 | Runes（$state/$derived/$effect）全景 | ★★★ | ★★★★ |
| 7 | Reactivity and Signals: Demystifying the Magic | 源码拆解频道 | 拆解 Alien Signals，揭示响应式「魔法」 | ★★★★★ | ★★★★ |

---

## 逐个深度解读

### 一、Beyond Signals —— Ryan Carniato（SolidJS 创造者）

**链接**：https://www.youtube.com/watch?v=DZPSAOBnBAM ｜ **频道**：@ryansolid

Ryan Carniato 是 SolidJS 的创造者，也是「细粒度响应式超级粉丝」这一自我标签的拥有者。在几乎所有主流框架都在拥抱 Signal 的今天，他却选择在这场演讲里反问一个问题：**Signal 之后是什么？**

视频的核心洞察有三点。第一，**Signal 解决的是「精确更新」，但应用状态往往不是单个值，而是一棵树或一个集合**。当你有一个包含一万条数据的列表，仅修改其中一条记录的某个字段时，朴素的 Signal 实现仍可能触发不必要的级联。Ryan 引入了 **Store（细粒度存储）** 的概念：把对象/数组的每一个属性都变成独立的信号，从而实现「按字段级」的依赖追踪。第二，他讨论了 **serials（序列化信号）** 与异步流的关系——未来响应式系统需要更优雅地处理时间维度上的数据流，而不仅仅是同步快照。第三，他坦诚地指出 Signal 的代价：**心智负担和调试复杂度**。响应式图的隐式依赖在大型应用里会变得难以追踪，这正是为什么「看得见的响应式」（如 Svelte Runes）比「隐式魔法」更受团队欢迎。

**实用价值**：这是理解「为什么所有框架都在造同一个轮子」的最佳入口。对正在做技术选型的架构师，它能帮你判断 Signal 是否真的适合你的场景——尤其是当你需要处理大型可变集合时，Store 模型远比朴素 Signal 重要。适合中高级前端工程师与框架作者。

### 二、It's Time To Talk About Signals —— Julian Burr（NDC Sydney 2026）

**链接**：https://www.youtube.com/watch?v=1g278F7qgj4 ｜ **会议**：NDC Sydney 2026

这是本期**最适合入门**的一期演讲。Julian Burr 用「蟹化（carcinization）」这个生物学术语，精准概括了前端现状：Solid、Svelte、Vue、Angular、Preact 各自从完全不同的起点出发，却殊途同归地演化出了 Signal 这一结构。这不是抄袭，而是**约束下的最优解**。

关键内容分四层。**第一层是问题**：传统 Virtual DOM（以 React 为代表）的更新粒度是「组件级」——状态一变，整个组件函数重新执行，产出新的虚拟树，再 diff 出真实 DOM 改动。这带来了两个问题：一是大量不必要的重渲染（即使最终 DOM 没变，JS 执行开销也实打实发生了）；二是开发者不得不手写 `useMemo`/`useCallback`/`React.memo` 来人工优化，这本质上是在**与框架对抗**。**第二层是 Signal 的解法**：每个值自带「谁依赖我」的订阅表，值变化时只通知真正的订阅者，粒度精确到「这个 DOM 文本节点」。**第三层是心智模型的统一**：无论语法是 `createSignal`（Solid）、`$state`（Svelte）、`ref()`（Vue）还是 `signal()`（Angular），底层都是同一张「响应式依赖图」。**第四层是 React 的处境**：React 没有原生 Signal，而是用 React Compiler（2025 年稳定）在编译期自动插入等价优化，走了一条「不改变心智模型、靠工具链兜底」的路线。

**实用价值**：看完这期，你会获得一张「横向理解所有现代框架」的统一地图，再也不用在每个框架里重复学一遍相似的概念。适合所有前端开发者，尤其是被 React `useMemo` 折磨过的人。

### 三、Fine Grained Reactivity with Signals

**链接**：https://www.youtube.com/watch?v=9yt-JpxuZvE

这期视频聚焦 Signal 的**底层机制本身**，是理解一切框架响应式的基石。它不绑定具体框架，而是把「响应式」当成一个可被独立实现的概念来讲解。

核心知识点包括三块。**第一，信号图（Signal Graph）**：Signal 不是孤立的，它通过 `computed`/`derived`/`memo` 等组合成一张有向无环图。当叶子节点变化时，更新沿着图的边传播。**第二，推（push）与拉（pull）的求值策略**：朴素实现是「推」——一旦变化立即通知所有依赖者重新计算；但这会浪费，因为中间结果可能还没被读取。更优的方案是「推拉结合」：变化时只标记依赖节点为「脏（dirty）」，真正有人读取时才重新计算（lazy 求值）。这正是 Solid、Alien Signals 等高性能实现的核心技巧。**第三，依赖追踪的栈式收集**：当一个函数（`effect` 或 `computed`）运行时，响应式系统在背后用一个「栈」记录它读取了哪些信号，从而自动建立订阅关系。理解这一点，你就能解释为什么 Signal 必须在「响应式上下文」里被读取才能建立依赖——在异步回调或事件处理器里读取信号是不会建立订阅的。

**实用价值**：这期是「知其所以然」的关键。掌握后，你不仅能写出更高效的响应式代码，还能在 bug 出现时（比如「为什么我的 effect 没触发」）迅速定位。适合想深入框架原理的开发者。

### 四、The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelte

**链接**：https://www.youtube.com/watch?v=qwDp5pZA_TA

这是一期面向**决策者**的综合盘点视频，回答了开发者最常问的问题：「2026 年到底该学哪个框架？」

视频把四大框架放在同一坐标系下比较，关键结论包括：**React**——生态最大、岗位最多，但响应式模型最「重」；2026 年的转折点是 **React Compiler 进入稳定版**，它能自动 memoize，大幅减少手写优化的需求，让 React 在性能上追平细粒度方案，同时保留开发者熟悉的心智模型。**Angular**——企业级首选，最大的变化是 **Signals + Zoneless** 成为主流，告别了困扰团队多年的 Zone.js 性能与调试难题，模板语法也引入了 `@if`/`@for` 控制流。**Vue**——平衡之王，Composition API + 细粒度响应式，3.5 之后进一步引入 **Alien Signals** 提升性能，对中文开发者最友好。**Svelte**——编译时方案的代表，Svelte 5 用 **Runes** 把响应式从「编译期魔法」升级为「运行时可见的信号」，可读性和可调试性大幅提升，体积小、运行时极轻。

视频还给出一个清醒的判断：**框架选择的影响正在变小，因为底层响应式模型正在趋同**。你会哪个，迁移到另一个的成本都在降低。

**实用价值**：适合即将进入前端或需要做团队技术选型的人，帮你用 20 分钟建立全局判断，避免陷入框架圣战。这是本期「投入产出比最高」的一期。

### 五、Zoneless Angular: Master Change Detection with Signals

**链接**：https://www.youtube.com/watch?v=eIzM_VDjdxw

Angular 的「Zoneless」转型是 2026 年企业前端最值得关注的变化之一，这期视频把它讲得透彻且可操作。

背景是：Angular 长期依赖 **Zone.js** 来感知变化——Zone.js 猴补丁了浏览器所有异步 API（`setTimeout`、`fetch`、事件回调等），在异步任务结束后触发全组件树的变更检测。这带来了三个痛点：一是**性能开销**，大量不必要的检测；二是**第三方库冲突**，Zone.js 可能拦截到不该管的异步操作；三是**调试黑盒**，开发者很难搞清楚「为什么我的组件被检测了」。

视频详解了 Zoneless 的解法：**用 `signal()` 取代 Zone.js 作为变更检测的触发源**。当一个信号变化时，Angular 精确知道哪些组件依赖它，只检测这些组件。配合 `@if`/`@for` 新控制流和 `httpResource`（声明式的数据获取），整个 Angular 开发体验焕然一新。视频还提到了一个关键时间点——**Angular v21 默认开启 Zoneless**，这意味着新项目可以彻底告别 Zone.js。

**实用价值**：对存量 Angular 项目，这是性能优化和现代化重构的直接指南；对评估 Angular 的人，它消除了「Angular 重、慢」的传统偏见。适合 Angular 开发者与企业前端负责人。

### 六、The Svelte 5 Reactivity Guide

**链接**：https://www.youtube.com/watch?v=tErKyuUTzsM

Svelte 5 是「编译时框架」阵营在响应式上的一次根本性升级，这期指南系统讲解了新的 **Runes** 系统。

核心是三个 Rune（符文）。**`$state`**：声明响应式状态，替代旧的 `let` 隐式响应式，让响应式「显式可见」。**`$derived`**：声明派生值，等价于其他框架的 `computed`/`memo`，自动追踪依赖。**`$effect`**：声明副作用，当依赖的信号变化时重新执行，用于 DOM 操作、日志、订阅等。视频特别强调了一个设计哲学的转变：旧 Svelte 的响应式是**编译期**的——编译器分析你的赋值语句来推断依赖，这在简单场景下很优雅，但在跨文件、动态场景下会失效；Svelte 5 的 Runes 是**运行时**信号，因此获得了「universal reactivity（通用响应式）」——即使把响应式逻辑抽到 `.svelte.js` 普通模块里，响应式依然成立，不再被组件边界束缚。

这种「编译时糖 + 运行时信号」的混合方案，被 Svelte 团队认为是兼顾「开发体验」与「正确性」的最佳平衡。

**实用价值**：从 Svelte 4 迁移到 5、或评估 Svelte 是否适合新项目的开发者必看。Runes 的显式性也让代码更易于团队协作和静态分析。

### 七、Reactivity and Signals: Demystifying the Magic of the Frontend（Alien Signals 拆解）

**链接**：https://www.youtube.com/watch?v=Iyts6NE6bps

这是本期**最硬核**的一期，作者直接拆解一个真实的信号库——**Alien Signals**（Vue 3.6 已采用其作为响应式内核）的源码，把「响应式魔法」彻底去神秘化。

视频的技术密度很高，重点拆解了几个关键设计。**第一，双层节点结构**：Alien Signals 区分「响应式节点」与「订阅者节点」，用极紧凑的数据结构降低内存占用，这也是它「快」的根本原因。**第二，脏值标记的位运算优化**：用一个整数的不同 bit 来表示节点的不同状态（可能脏、确定脏、已检查等），避免频繁的对象属性访问，让依赖传播的开销接近原生变量读取。**第三，去抖动的批量更新**：多个信号在同一次同步代码块里变化时，合并成一次更新传播，避免中间态的无效计算。**第四，与 Vue 3.5 之前实现的对比**：旧的响应式基于 ES6 Proxy，虽然 API 优雅，但 Proxy 的拦截开销在高频更新场景下成为瓶颈；Alien Signals 用更直接的 getter/setter 拦截配合位运算，在不损失 API 体验的前提下提升了数倍性能。

**实用价值**：这期是写给「想自己写框架、或想极致优化响应式性能」的人。理解 Alien Signals 后，你会明白为什么 Vue 3.6 在基准测试里能显著超越自身历史版本，也能在自己的业务里复用这些优化思路（如批量更新、懒求值）。适合框架源码爱好者与性能极客。

---

## Mermaid 知识图谱

```mermaid
flowchart TD
    Problem[问题：组件级重渲染<br/>与 useMemo 心智负担] --> Model{响应式模型}

    Model --> VDOM[Virtual DOM 路线<br/>React + React Compiler]
    Model --> Signal[细粒度响应式<br/>Signal 路线]

    Signal --> Core[核心机制]
    Core --> Graph[信号依赖图]
    Core --> PushPull[推拉结合求值<br/>lazy + 脏标记]
    Core --> Track[栈式依赖追踪]

    Signal --> Impls[各框架实现]
    Impls --> Solid[SolidJS<br/>原生信号，无 VDOM]
    Impls --> Svelte[Svelte 5 Runes<br/>$state/$derived/$effect]
    Impls --> Vue[Vue 3.5/3.6<br/>ref/reactive → Alien Signals]
    Impls --> Angular[Angular 17+<br/>signal + Zoneless v21]
    Impls --> Preact[Preact Signals]

    Solid --> Store[Store 细粒度存储]
    Angular --> Http[httpResource 声明式数据]
    Vue --> Alien[Alien Signals 位运算优化]

    VDOM -.编译期自动 memoize.-> Opt[性能追平细粒度方案]
    Signal -.蟹化收敛.-> Opt
    Opt --> Future[未来：响应式模型趋同<br/>框架选择影响下降]
```

## 本期核心结论

1. **Signal 不是流行，而是约束下的必然**。从四个不同起点演化出同一个结构，说明细粒度响应式是当前工程实践下「精确更新 + 低心智负担」的最优解。
2. **React 走了一条独特的路**：不引入原生 Signal，而是用 React Compiler 在编译期自动优化，试图「不改心智模型地」追平性能。这条路能否跑赢，取决于编译器的成熟度。
3. **粒度才是关键**：从「组件级」到「字段级」，响应式的每一次粒度细化，都是性能与可维护性的双重胜利。Store / Alien Signals / Zoneless 都是这条主线的不同切面。
4. **框架选择的影响正在缩小**。底层模型趋同意味着「会一个，迁移另一个」的成本持续降低。比起纠结框架，更重要的是**理解响应式本身**——这正是本期七期视频共同的主线。

## 延伸推荐

- **Theo - t3.gg（@t3dotgg，约 54 万订阅）**：TypeScript 生态的犀利评论者，频繁讨论 React 性能陷阱与框架选型，观点鲜明、节奏快。
- **Ryan Carniato（@ryansolid）**：SolidJS 创造者，其频道是细粒度响应式的「第一信源」，持续更新对各大框架响应式的横向点评。
- **Joshua Morony**：专注信号式响应式与游戏/WebGPU 交叉领域的深度内容，适合想看到响应式在非传统场景应用的开发者。
- **ThePrimeagen / ThePrimeTime**：以娱乐化方式点评框架与开发工具，适合在轻松氛围里建立对「框架战争」的全局认知。

## 参考来源

1. [Beyond Signals — Ryan Carniato (YouTube)](https://www.youtube.com/watch?v=DZPSAOBnBAM) — SolidJS 创造者探讨信号之后的细粒度存储与异步流边界
2. [It's Time To Talk About Signals — Julian Burr, NDC Sydney 2026 (YouTube)](https://www.youtube.com/watch?v=1g278F7qgj4) — 用「蟹化」概念解释前端框架向信号的趋同演化
3. [The Front-end Frameworks Guide 2026: React vs Angular vs Vue vs Svelte (YouTube)](https://www.youtube.com/watch?v=qwDp5pZA_TA) — React Compiler 稳定背景下四大框架的 2026 定位对比
4. [Zoneless Angular: Master Change Detection with Signals (YouTube)](https://www.youtube.com/watch?v=eIzM_VDjdxw) — Angular 用 signal() 取代 Zone.js 实现精确变更检测
5. [The Svelte 5 Reactivity Guide (YouTube)](https://www.youtube.com/watch?v=tErKyuUTzsM) — Svelte 5 Runes（$state/$derived/$effect）响应式系统全景
6. [Reactivity and Signals: Demystifying the Magic (Alien Signals, YouTube)](https://www.youtube.com/watch?v=Iyts6NE6bps) — 源码级拆解 Alien Signals 响应式内核（Vue 3.6 采用）

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
