dev.to | 📄 原文链接 | 2026-11-05 收录

Svelte 5 不是纯编译魔法:Runes、信号与直接改 DOM 到底怎么跑

来源:dev.to — 2026-11-04

📋 概述

Svelte 早年靠编译器改写在赋值处注入 $$invalidate,把组件标脏后统一重跑更新函数。这套做法的裂缝在应用变大后暴露:响应式只在 .svelte 文件内有效,业务逻辑挪到普通 JS 就失效;深改对象还得 user = user 重新赋值,让整个组件重算。Svelte 5 转向 Runes 与推拉式运行时信号图,很多人以为它放弃了编译器优势,作者认为恰恰相反——编译器负责静态分析、模板提升与响应式空洞定位,运行时信号负责跨模块依赖跟踪与深对象变更,两者配合才做到无虚拟 DOM 的细粒度更新,而 $state.raw 是追求极限性能时的开关。

🔑 核心要点

💡 金句

“It is the realization that the compiler and the runtime signal graph are strongest when working in harmony.”
译:这是一种认识:编译器和运行时信号图只有在协同工作时才最强。
← 返回 dev.to 首页