使用 Astro 构建高性能静态网站

深入了解 Astro 框架,学习如何利用 Islands 架构构建快速、现代的静态网站。

liuzhne 2026年4月6日
#Astro #前端 #教程

什么是 Astro?

Astro 是一个现代化的静态网站生成器,它的核心特点是 Islands 架构 —— 一种在静态页面中嵌入交互式组件的创新方式。

为什么选择 Astro?

1. 极致的性能

Astro 默认生成零 JavaScript 的静态 HTML,这意味着:

  • 更快的首屏加载速度
  • 更好的 SEO 表现
  • 更低的带宽消耗

2. Islands 架构

只有在需要交互的地方才会加载 JavaScript,这被称为 部分水合(Partial Hydration)

---
// 这段代码只在服务器端运行
const data = await fetch('https://api.example.com/data');
---

<!-- 静态 HTML,无 JavaScript -->
<h1>欢迎来到我的网站</h1>

<!-- 交互式组件,按需加载 -->
<InteractiveChart client:visible data={data} />

3. 支持多种前端框架

Astro 可以与任何主流前端框架配合使用:

  • React
  • Vue.js
  • Svelte
  • Solid.js
  • Preact

快速开始

安装

# 使用 npm
npm create astro@latest

# 使用 yarn
yarn create astro

# 使用 pnpm
pnpm create astro@latest

项目结构

my-astro-project/
├── src/
│   ├── components/     # 可复用组件
│   ├── layouts/        # 页面布局
│   ├── pages/          # 路由页面
│   └── content/        # 内容集合(博客文章等)
├── public/             # 静态资源
├── astro.config.mjs    # 配置文件
└── package.json

创建第一个页面

src/pages/index.astro 中:

---
const title = '我的 Astro 网站';
---

<html lang="zh-CN">
  <head>
    <meta charset="UTF-8">
    <title>{title}</title>
  </head>
  <body>
    <h1>欢迎来到 {title}</h1>
  </body>
</html>

内容集合

Astro 的内容集合功能让管理 Markdown 内容变得非常简单:

// src/content.config.ts
import { defineCollection, z } from 'astro:content';

const postsCollection = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()).default([]),
  }),
});

export const collections = {
  posts: postsCollection,
};

部署

Astro 支持多种部署平台:

  • GitHub Pages - 免费,适合个人项目
  • Vercel - 优秀的性能和分析工具
  • Netlify - 强大的表单处理和身份验证
  • Cloudflare Pages - 全球 CDN 加速

总结

Astro 是一个非常优秀的静态网站生成器,特别适合:

  • 内容密集型网站(博客、文档)
  • 营销页面
  • 电子商务网站

如果你正在寻找一个性能优秀、开发体验良好的静态网站解决方案,Astro 绝对值得一试!

相关资源