做内容型网站(博客、文档站、产品页、营销站)时,最常见的矛盾是:想要丰富的交互和组件化开发体验,又不想让用户为用不到的 JavaScript 买单。传统 SPA 一打开就是一大包 JS,首屏慢、SEO 差。Astro 的思路很干脆——默认不往浏览器发任何 JavaScript,只把交互真正需要的部分(岛屿)单独 hydrate。这样既用上了 React / Vue / Svelte 等熟悉的组件,又交出几乎零 JS 的轻量页面。

项目基本信息

信息项详情
项目名称astro
GitHub地址https://github.com/withastro/astro
项目描述面向内容型网站的现代化 Web 框架,默认零 JS、岛屿架构
作者withastro
开源协议MIT License
开源状态公开
LanguagesTypeScript
支持平台Windows / macOS / Linux
最后更新2026-10-24

一、项目介绍

Astro 是一个面向内容型网站的 Web 构建框架,核心理念是“岛屿架构(Islands Architecture)”:页面默认以静态 HTML 输出,不向浏览器发送任何 JavaScript;只有被显式标记为可交互的组件(岛屿)才会按需 hydrate。它同时兼容 React、Vue、Svelte、Solid、Preact、Lit 等主流 UI 框架,让你用熟悉的组件写页面,却不必承担整页 SPA 的运行开销。

二、核心优势

一是性能优先:默认零 JS,首屏更快、SEO 更好,Lighthouse 分数普遍更高。二是框架无关:可以在同一个项目里混用不同 UI 框架的组件,团队技术栈不被绑定。三是内容友好:原生支持 Markdown / MDX、内容集合(Content Collections)、类型安全的 frontmatter,做博客与文档站尤其顺手。四是灵活输出:支持纯静态(SSG)与按需服务端渲染(SSR/Adapter),可部署到任意静态托管或 Node 服务。

三、适用场景

适合博客、文档站、产品官网、落地页、营销站等“以内容为主、交互为辅”的站点。当你既想要组件化开发体验,又对首屏性能与可访问性有要求时,Astro 是少有的能把两者兼得的选择。

四、安装教程

推荐用官方脚手架一键初始化:

npm create astro@latest

按提示选择模板(空项目、博客、文档等)即可。若要手动接入已有项目:

npm install astro

并在 package.json 里加 "dev": "astro dev"、"build": "astro build" 脚本,再建 astro.config.mjs 与 src/pages/ 目录。

常见报错:npm create astro 卡在交互选择,可加 --template 指定模板跳过;Node.js 建议 18.17+/20+,过低版本会报错。

五、使用示例

新建一个页面 src/pages/index.astro:

---
const title = "你好,Astro";
---
<html lang="zh-CN">
  <head><title>{title}</title></head>
  <body>
    <h1>{title}</h1>
    <p>这段 HTML 不携带任何 JavaScript。</p>
  </body>
</html>

加一个可交互岛屿(React 组件):

---
import Counter from '../components/Counter.jsx';
---
<Counter client:load />

client:* 指令决定岛屿何时 hydrate,其余部分仍是静态 HTML。

六、常见问题

Q:Astro 能做成带登录的后台吗?
A:可以。用 SSR Adapter(Node、Vercel、Netlify 等)即可做服务端渲染与动态接口,静态部分仍享受零 JS 优势。

Q:必须用 TypeScript 吗?
A:组件脚本默认是 TypeScript,但纯 JS 也能写;类型检查是可选的。

Q:能不能混用多个框架?
A:能。同一个项目里 React、Vue、Svelte 组件可以共存,只要装好对应集成。

七、总结

Astro 把“性能”和“开发体验”从二选一变成可兼得:你继续用喜欢的组件框架,用户拿到的却是几乎零 JS 的轻量页面。对内容型站点,它是兼顾速度与可维护性的现代默认选项。