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 18Svelte 5
初始加载(gzip)~42kb~4kb
更新 1000 节点48ms12ms
内存占用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 生态还是霸主地位。


⚠️ 注意事项

  1. Svelte 5 是最新稳定版:如果你看到老教程用的是 $: 语法,那是 Svelte 4 的写法。Svelte 5 完全兼容,但 runes 是新推荐写法
  2. 第三方组件库少:很多 React/Vue 组件不能直接用,需要找 Svelte 适配版
  3. SSR 需要 SvelteKit:纯 Svelte 是纯客户端渲染,要 SSR 得用 SvelteKit
  4. 包体积优势在小型项目才明显:项目大了,第三方依赖多了,bundle 差距会缩小

✅ 总结

Svelte 5 是一个让人眼前一亮的框架。编译型思路、无虚拟 DOM、runes 响应式,写起来清爽,跑起来飞快。

Stack Overflow 多年榜首不是白拿的。

适合:中小项目、对 bundle 大小有洁癖的前端开发者、想逃离 React 繁重的替代方案

缺点:生态不如 React 丰富,大型项目经验少

推荐指数:⭐⭐⭐⭐(扣一分怕你骄傲)


相关链接