Skip to content

Astro

Astro 是一个静态站点生成器,它允许你使用 React、Vue、Svelte 等框架来构建你的网站。

为什么使用 Astro

Astro 作为一个现代的静态站点生成器,相比于 WordPress、Hugo、GitBook 和 Quarto 等工具,具有独特的优势。

Astro 的核心优势在于其卓越的性能和灵活性。默认情况下,Astro 生成的网站是零 JavaScript 的,只在必要时才加载 JS,这使得网站加载速度极快。同时,Astro 支持多种前端框架,如 React、Vue 和 Svelte,开发者可以在同一个项目中混用不同的框架,这种灵活性是其他工具难以企及的。

在开发体验方面,Astro 提供了基于组件的开发方式,支持 TypeScript,并且具有快速可靠的热更新功能。这些特性使得开发过程更加高效和愉悦。

下面是 Astro 与其他工具的简要对比:

特性预览速度灵活性部署难度适用场景
Astro高(多框架支持)中等各类网站
WordPress非常快中(插件生态)中等博客、CMS
Hugo非常快中(模板系统)简单静态网站
GitBook一般简单文档
Quarto中(R/Python 支持)中等学术出版

相比 WordPress,Astro 更轻量,不需要管理数据库和服务器,适合构建各种静态网站。对比 Hugo,虽然 Hugo 以构建速度快著称,但 Astro 提供了更现代的开发体验和更丰富的生态系统。相较于 GitBook,Astro 的可定制性更强,能够构建更复杂的网站结构和功能。与 Quarto 相比,Astro 更适合前端开发者,支持更多的 Web 技术和框架,而不仅限于学术出版领域。总的来说,Astro 在性能、灵活性和开发体验上都有突出表现,特别适合那些需要高性能、高度定制化的现代网站项目。

快速开始

  1. 使用 npm 安装 Astro:

    Terminal window
    npm create astro@latest
  2. 启动开发服务器:

    Terminal window
    npm run dev
  3. 访问 http://localhost:4321 查看效果。

核心概念

Astro 的核心概念主要包括以下几个方面:

组件(Components)

Astro 组件是网站的基本构建块。它们是纯 HTML 模板,没有客户端运行时。主要特点:

  • 使用类似 JSX 的语法
  • 支持导入和使用其他组件
  • 可以包含 JavaScript 逻辑
  • 文件扩展名为 .astro

页面(Pages)

页面是放在 src/pages 目录下的特殊组件,Astro 会自动将它们转换为网站的页面。支持:

  • .astro 文件
  • .md/.mdx 文件
  • .html 文件
  • 其他框架组件文件

布局(Layouts)

布局组件用于页面间共享通用的 UI 结构,比如页眉、导航栏和页脚。它们:

  • 通常放在 src/layouts 目录
  • 可以嵌套使用
  • 支持插槽(slots)机制

内容集合(Collections)

内容集合用于管理和验证相关内容文件(如博客文章):

  • src/content 目录定义
  • 支持类型安全
  • 提供 API 进行查询
  • 可以定义自定义 schema

路由(Routing)

Astro 使用基于文件的路由系统:

  • 自动根据 pages 目录结构生成路由
  • 支持动态路由
  • 可以通过 getStaticPaths 生成静态路由

目录结构

典型的 Astro 项目目录结构如下:

.
├── public/
├── src/
│ ├── components/
│ ├── content/
│ ├── layouts/
│ ├── pages/
│ └── styles/
├── astro.config.mjs
├── package.json
└── tsconfig.json

其中目录的作用分别为:

目录/文件作用
public/静态资源目录,存放图片、字体等不需要处理的文件,会被原样复制到构建输出目录
src/源代码目录,包含项目的主要代码文件
src/components/可重用的 Astro 组件、React 组件等
src/content/内容集合目录,用于存放 Markdown/MDX 等内容文件
src/layouts/页面布局组件,用于定义页面的整体结构
src/pages/页面文件目录,文件路径即为最终的路由路径
src/styles/全局样式文件目录,存放 CSS 文件
astro.config.mjsAstro 配置文件,用于配置插件、集成等项目设置
package.json项目依赖配置文件
tsconfig.jsonTypeScript 配置文件(如果使用 TypeScript)

部署

使用 GitHub 与 Cloudflare Pages 的组合部署。具体步骤参照官方文档中的详细介绍。这样当 GitHub 上的内容更新时,Cloudflare Pages 会自动部署最新的内容。

参考资料