Svelte 是一个编译型前端框架,将 .svelte 组件在构建时转化为高效原生 js,无虚拟 dom、无运行时响应式系统;通过静态分析实现零开销更新、作用域 css 和按需绑定,显著减小体积、提升性能。

Svelte 不是 javaScript 的一个“版本”或“分支”,而是一个前端编译型框架,它用类似 html 的语法写组件,但关键在于:它在构建时(compile time)把组件转换成高效、无框架运行时的原生 javascript 代码,而不是像 react 或 vue 那样依赖浏览器中持续运行的虚拟 DOM 或响应式系统。
它不是运行时框架,而是编译器
Svelte 的核心理念是“把框架逻辑移进编译步骤”。你写的 .svelte 文件(含 HTML 模板、script 和 style)不会直接跑到浏览器里解释执行;而是通过 svelte/compiler 在打包阶段(比如用 vite 或 Rollup)被解析、分析、重写,最终输出为一段段干净、细粒度的手动更新 DOM 的 JS 代码。
例如,一个带响应式赋值的 $: doubled = count * 2,Svelte 编译器会静态分析数据流,在 count 被修改的位置自动插入 doubled = count * 2 —— 不需要代理、getter/setter、脏检查,也不需要运行时追踪依赖。
编译时优化的关键方式
- 无虚拟 DOM:不生成 Vnode 树,不比对 diff,直接操作真实 DOM 节点。更新只发生在真正变化的地方,零运行时开销。
- 响应式语句静态推导:
$:块会被提取并重写为显式的更新逻辑,依赖关系在编译期确定,不靠运行时收集依赖。 - 按需绑定与事件委托:比如
on:click编译后就是原生addEventListener;表单绑定(bind:value)会生成双向同步的 setter/getter,不依赖通用指令系统。 - CSS 作用域自动注入:
<style></style>中的规则会被添加唯一属性选择器(如data-svelte-h123),并只在对应组件中生效——这是编译时加的,不需要运行时样式管理库。
结果:更小体积 + 更快启动
因为没运行时框架代码,一个极简 Svelte 组件编译后可能只有几十行 JS,没有 React 的 40KB+ 运行时、也没有 Vue 的响应式系统开销。这意味着首屏加载更快、内存占用更低、交互响应更直接。尤其适合内容型站点、营销页、嵌入式小工具等对性能和包体积敏感的场景。
本文档主要讲述的是Android的资源与国际化设置;资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML,PNG以及JPEG文件XML文件根据描述的不同有不同格式。这份文档描述可以支持什么样的文件,语法,以及各种格式。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0 立即学习“Java免费学习笔记(深入)”;
基本上就这些:Svelte 把“框架该干什么”尽可能挪到编译期做完,让最终发往浏览器的,只是恰到好处的、手写风格的 JavaScript —— 不复杂,但容易忽略它背后彻底不同的设计哲学。