Astro 最容易被误解的一点,是“默认没有客户端交互”。
很多人一听这个,就误以为:
Astro 只能做死页面这是错的。
Astro 的真实意思是:
默认先不给整馆乱拉电线。
也就是官方常说的:
server-firstzero JS by default
这两句不是营销词,而是很深的工程选择。
看下面这段:
---
import Countdown from '../components/Countdown.jsx';
---
<h2>夏季特展倒计时</h2>
<Countdown />如果 Countdown 是一个 UI 框架组件,但你没有加任何 client:* 指令,那么 Astro 会:
- 尽量把它渲染成 HTML
- 不给它打包客户端交互脚本
- 页面上看到的是“结果”,不是“整个组件运行时”
这意味着:
默认目标不是“让所有东西都可交互”
而是“让页面尽可能少发 JavaScript”对内容站来说,这个选择极其值钱。
因为很多页面里,真正需要互动的通常只有少数几个地方:
- 搜索框
- 价格计算器
- 评论折叠面板
- 图片轮播
- 登录后的个性化小挂件
而不是整页每一个角落。