返回文章列表

用 Astro 搭建静态网站的一点体会

#Astro#前端#性能

传统前端框架有个矛盾:为了交互,整页都要下发并执行 JavaScript,即使 90% 的内容其实是静态的。Astro 用 Islands 架构 解决了这个问题。

一切默认静态

在 Astro 里,页面默认编译成纯 HTML,浏览器不下载任何框架运行时。只有你显式标记为「岛屿」的组件才会加载对应的 JS。

---
import Counter from '../components/Counter.tsx';
---

<!-- 静态内容,零 JS -->
<h1>标题</h1>

<!-- 交互岛屿:仅这块加载 React -->
<Counter client:visible />

client 指令

client:* 指令决定岛屿何时激活:

指令 时机
client:load 页面加载后立即激活
client:visible 滚动到可见时才激活
client:idle 浏览器空闲时激活

对于「首屏之下」的交互模块,用 client:visible 能进一步节省首屏开销。

结论

如果你的站点以内容展示为主、只有少量交互,Astro 几乎是理想选择:写起来像普通网页,性能却接近手写的静态页。