Svelte 5是一款编译型前端框架,将代码在构建阶段编译为极简原生 JS,无需虚拟 DOM 运行。87k Stars、Stack Overflow 最爱框架榜首,内置深度响应式系统 runes,Bundle 体积比 React 小数倍。上手简单、性能爆表,中小项目首选。
🎤 引言
做前端这么多年,你有没有这种感觉:React 写个小功能,恨不得引入一堆依赖,打包出来的 bundle 体积让人看了想骂人。Vue 挺好,但写起来总觉得有点啰嗦。
比如说你想做个简单的活动页面,用 React 的话,光 node_modules 就得等半天,最后打包出来 200kb+,首屏加载 3 秒起步。用户骂骂咧咧,SEO 更是灾难。
最近在 GitHub 上瞎逛时发现了 Svelte,这个框架有点意思——它是编译型的,不是运行时的。啥意思?就是你写的代码,在构建阶段就直接被编译成原生 JS,没有虚拟 DOM,没有运行时 overhead。
87k Stars,Stack Overflow 连续多年"最受欢迎框架"榜首,这不是闹着玩的。
最骚的是,它编译出来的 bundle 有多小?做个简单页面,gzip 后可能就 10kb。10kb 啊兄弟们,什么概念?React 随便一个 Hello World 都比这大。
⭐ 核心功能
Svelte 5 最大的噱头就是 runes——一套全新的深度响应式系统。
runes 是什么?
简单说,就是一种更直观的状态管理方式。以前 Svelte 用 $: 来响应式更新数据,现在 runes 让你用 $state()、$derived()、$effect() 这些函数来声明状态。
// Svelte 5 runes写法
let count = $state(0);
let doubled = $derived(count * 2);
$effect(() => {
console.log(`Count is ${count}`);
});对比一下 React 的 useState + useEffect,是不是简洁多了?
核心卖点:
- 编译时优化:代码在构建阶段编译成极简原生 JS,Bundle 体积小得离谱
- 无虚拟 DOM:直接操作真实 DOM,减少内存开销和更新开销
- 原生性能:生成的代码就是手写优化过的 JS,执行效率接近原生
- Runes 响应式:Svelte 5 的核心新特性,状态管理更直观
性能数据(官方 benchmark):
| 场景 | React 18 | Svelte 5 |
|---|---|---|
| 初始加载(gzip) | ~42kb | ~4kb |
| 更新 1000 节点 | 48ms | 12ms |
| 内存占用 | 100% | 40% |
📥 安装与使用
环境准备:
# 需要 Node.js 18+
node --version # 确认版本
# 创建 Svelte 项目(推荐用 SvelteKit)
npm create svelte@latest my-app
cd my-app
npm install
npm run dev项目结构(SvelteKit):
my-app/
├── src/
│ ├── routes/
│ │ └── +page.svelte # 页面组件
│ └── lib/
│ └── Counter.svelte # 业务组件
├── static/
├── svelte.config.js
└── vite.config.js写个计数器练练手(src/routes/+page.svelte):
<script>
let count = $state(0);
let doubled = $derived(count * 2);
</script>
<main>
<h1>计数器</h1>
<p>{count} × 2 = {doubled}</p>
<button onclick={() => count++}>点我 +1</button>
<button onclick={() => count--}>点我 -1</button>
</main>
<style>
main { text-align: center; padding: 2rem; }
button {
margin: 0 0.5rem;
padding: 0.5rem 1rem;
cursor: pointer;
}
</style>访问 http://localhost:5173,热更新直接生效,改代码不用刷新页面。
构建生产版本:
npm run build
# 输出到 build/ 目录
# 看看 bundle 有多小,你会被吓到🎯 适用场景
Svelte 很香的场景:
- 中小型前端项目(官网、营销页、Dashboard)
- 对性能敏感的应用(首屏加载、SSR)
- 个人项目或小团队(学习成本低,产出快)
- Vite + Svelte 组合拳,开发体验拉满
比如:你接了个外包,要做个展示型官网,客户预算低但要求加载快。Svelte + Vite 就是绝配,开发快、打包小、用户爽。
Svelte 可能不太合适的场景:
- 超大型企业应用(React 生态更成熟)
- 需要大量第三方组件库(Vue/React 选择更多)
- 团队里大家都用 React(迁移成本)
比如:你要做个有 200 个页面的中台系统,React 有 Ant Design 金山银山,Svelte 得自己造轮子,这时候就别头铁了。
🔍 对比/替代方案
| 框架 | 体积 | 上手难度 | 生态 | 谁在用 |
|---|---|---|---|---|
| Svelte 5 | 极小 | 简单 | 一般 | Vercel、Rich Harris |
| React | 中等 | 中等 | 丰富 | Facebook、Netflix |
| Vue 3 | 中等 | 简单 | 丰富 | 阿里、GitLab |
| Solid | 小 | 中等 | 弱 | - |
Stack Overflow 2024 调查数据显示,Svelte 是"最受欢迎框架"第一名,超过了 React 和 Vue。但实际生产环境里,React 生态还是霸主地位。
⚠️ 注意事项
- Svelte 5 是最新稳定版:如果你看到老教程用的是
$:语法,那是 Svelte 4 的写法。Svelte 5 完全兼容,但 runes 是新推荐写法 - 第三方组件库少:很多 React/Vue 组件不能直接用,需要找 Svelte 适配版
- SSR 需要 SvelteKit:纯 Svelte 是纯客户端渲染,要 SSR 得用 SvelteKit
- 包体积优势在小型项目才明显:项目大了,第三方依赖多了,bundle 差距会缩小
✅ 总结
Svelte 5 是一个让人眼前一亮的框架。编译型思路、无虚拟 DOM、runes 响应式,写起来清爽,跑起来飞快。
Stack Overflow 多年榜首不是白拿的。
适合:中小项目、对 bundle 大小有洁癖的前端开发者、想逃离 React 繁重的替代方案
缺点:生态不如 React 丰富,大型项目经验少
推荐指数:⭐⭐⭐⭐(扣一分怕你骄傲)
相关链接: