← 全部文章

Astro 是什麼?——新一代靜態網站框架入門

前言

在過去幾年的前端生態中,我們經歷了一個有趣的循環:從靜態 HTML,到全 SPA(Single Page Application),再到 SSR(Server-Side Rendering)和 SSG(Static Site Generator)。每一種方案都在解決某些問題的同時,也帶來了新的取捨。

Astro 選擇了一條不同的路。

Astro 的核心哲學

Astro 的設計圍繞著一個簡單但激進的前提:盡可能減少傳送到瀏覽器的 JavaScript

在傳統的 React/Vue 框架中,即使一個頁面沒有任何互動,框架的 runtime 仍然會被載入到用戶端。這意味著用戶必須下載、解析和執行幾十 KB 的 JavaScript,只是為了看到一些靜態文字和圖片。

Astro 的做法是:在構建時將所有 HTML 渲染完畢,預設輸出零 JavaScript。只有當你明確標記某個組件需要互動時,它的 JavaScript 才會被載入。

關鍵特性

1. Zero JS by Default

這是最核心的區別。一個 Astro 頁面如果沒有任何互動元素,它的輸出就是純 HTML + CSS。沒有框架 runtime,沒有 hydration 開銷。

2. Islands Architecture

Astro 提出了 Islands 架構(也稱為 Partial Hydration)——頁面上的每個互動組件都是一個獨立的「島嶼」,它們各自獨立載入自己的 JavaScript,互不干擾。靜態部分則保持為純 HTML。

3. 多框架支援

你可以在同一個 Astro 專案中同時使用 React、Vue、Svelte、Solid 或 Preact 組件。這讓團隊遷移變得平滑——不需要一次重寫所有東西。

4. Content Collections

Astro 提供了類型安全的內容集合管理系統,讓 Markdown、MDX 和 JSON 內容擁有自動補全、校驗和查詢能力。

適合的場景

場景 推薦程度
部落格 / 內容網站 ⭐⭐⭐⭐⭐
文件網站 ⭐⭐⭐⭐⭐
電子商務產品頁 ⭐⭐⭐⭐
行銷登陸頁 ⭐⭐⭐⭐⭐
儀表板 / 後台 ⭐⭐⭐

和 Next.js 的關鍵差異

  • 輸出策略:Astro 預設是靜態站點產生器(SSG),Next.js 預設是伺服器渲染(SSR)
  • JS 開銷:Astro 預設零 JS,Next.js 即使是靜態頁面也包含 React runtime
  • 架構:Astro 使用 Islands,Next.js 使用 React Server Components
  • 學習曲線:Astro 更接近傳統 HTML 寫法,Next.js 需要理解 React 生態

開始使用

建立一個新的 Astro 專案只需要一行指令:

pnpm create astro@latest

然後按照引導選擇模板和配置即可。

結語

Astro 不是在發明新的 UI 框架,而是在重新思考一個問題:我們真的需要為每個頁面載入那麼多的 JavaScript 嗎? 對於內容為主的網站來說,答案往往是否定的。

它不完美,但它在它擅長的領域——內容網站——做得非常好。這也是為什麼越來越多的人選擇 Astro 來建立他們的部落格和文檔站點。