ssg 合輯 10/18/2026

Astro 四層能力:從靜態網站到互動應用

#astro#ssg#architecture#tutorial#frameworks

Astro 不只是把文章變成 HTML 的工具。除了靜態內容,它還能搭配原生 JavaScript、React/Vue/Svelte 等互動元件,必要時再接上伺服器功能。

理解這四種能力,就能從需求判斷需要多少技術,不必一開始便採用複雜的網站架構。

先建立觀念:這不是 Astro 的四種互斥模式。 同一個網站可以同時保留大量靜態頁面、少量 JavaScript、局部 Islands,以及需要後端的路由。

一張表理解四層能力

能力用白話說可以做什麼是否一定要自架後端
① 靜態 HTML把內容做成能瀏覽的網頁部落格、作品集、知識庫不需要
② 原生 JavaScript讓網頁可以操作與計算計算器、測驗、搜尋篩選不需要
③ Islands 群島元件讓複雜的互動區塊更好管理互動儀表板、多步驟表單不需要
④ 表單、會員與線上服務讓網站能收資料、保存紀錄、登入或收款報名表單、會員中心、線上付款、購物車與訂單不一定;可用外部服務,較複雜的功能需要安全後端

① 靜態 HTML:建立內容與頁面

這是 Astro 最基本的能力。它在建置時,把 Markdown、資料與頁面模板轉成已經完成的 HTML,訪客打開網站就能閱讀。

能做什麼? 部落格、知識庫、教學文章、服務頁、作品集、圖文資料庫與搜尋引擎友善的內容頁。例如用一份資料與同一套模板,生成整套塔羅牌百科,而不必逐頁手工製作。

何時使用? 內容主要供閱讀、可預先產生,且不必每次訪問都重新運算時。若內容更新,通常重新建置即可。

② 原生 JavaScript:在瀏覽器加入互動

網頁即使是預先產生的 HTML,也能載入 JavaScript,讓使用者當下操作、計算或儲存資料。

能做什麼? BMI、生命數字與房貸計算器;問卷評分、塔羅抽牌;文章搜尋、篩選、排序;動畫、結果卡片、瀏覽器本地儲存,以及呼叫允許瀏覽器存取的 API。

何時使用? 小型互動工具或狀態管理不複雜的功能。這些互動可以放在純靜態託管的 Astro 網站中,通常不需要 React 或自己的伺服器。

注意:不要把私密 API Key 放在瀏覽器端。

③ Islands:把複雜互動交給局部元件

Islands(群島架構)是 Astro 的一種設計方式:頁面大多數內容仍是普通 HTML,只有真正需要互動的部分使用框架元件與客戶端 JavaScript。

例如,文章與導覽是靜態 HTML,但生日計算器使用 React、篩選面板使用 Vue、抽牌動畫使用 Svelte。這些元件可以在同一個 Astro 頁面中組合,不需要因此把整站改成單頁應用程式。

能做什麼? 複雜表單、互動圖表、多元件協作、需要管理許多操作狀態的工具。

何時使用? 當原生 JavaScript 開始需要大量手動更新畫面、追蹤元件狀態時,可以選用 React、Vue 或 Svelte。一般不必同時引入三套框架;選最適合的一套即可。

Islands 並不代表一定要有後端。常見的 Client Islands 可部署在靜態網站上。

④ 表單、會員與線上服務:讓網站能保存資料、登入與收款

前面三層讓網站可以被閱讀、操作、計算。到了這一層,網站還能把訪客提交的資訊送出去、保存資料,或與其他線上服務合作。

例如:有人填寫活動報名表,你收得到報名資訊;會員登入後,能看到自己的紀錄;顧客買了商品,網站能確認付款並建立訂單。

這些功能不代表一定要自己架伺服器。簡單需求可以使用現成服務;涉及私人資料、付款確認、訂單或權限管理時,才需要更加完整且安全的後端處理。

從簡單到複雜,可以做到什麼?

想做的功能訪客實際會看到或做到什麼通常怎麼完成
① 聯絡表單、活動報名填姓名與 Email,送出留言或報名嵌入 Google 表單,或使用現成表單服務
② 電子報與通知留 Email 訂閱電子報、收到報名通知串接電子報或寄信服務
③ 查詢資料查詢活動名額、商品資訊或公開資料讀取其他服務提供的資料
④ 保存紀錄儲存問卷結果、預約資料,下次還能查看使用提供儲存功能的線上服務或資料庫
⑤ 會員註冊、登入建立帳號、登入、查看自己的內容串接會員登入服務,處理身分與權限
⑥ 會員專屬功能查看個人報告、學習進度、歷史訂單安全讀取個人的雲端紀錄
⑦ 商品展示與購物車選商品、加入購物車、計算總額商品展示可以是靜態頁;購物車可在瀏覽器運作
⑧ 線上付款用信用卡或其他支付方式結帳串接第三方金流服務並安全確認付款
⑨ 訂單、庫存與優惠券查訂單、使用優惠碼、確認是否有貨需要可靠的資料儲存及訂單處理
⑩ 完整購物網站從會員、挑商品、結帳到出貨追蹤組合以上功能,加上商店管理後台

以實際網站來想像

情境 A:活動報名網站。 介紹活動與講師,訪客填寫 Google 表單即可報名。網站本身可以保持靜態,不必建立自己的會員系統。

情境 B:會員學習網站。 訪客先看到公開課程介紹,登入後才能閱讀付費內容、保存課程進度與個人紀錄。這時就需要登入驗證與安全的資料儲存。

情境 C:販售電子書或少量商品。 商品介紹可以是一般靜態頁面,點擊購買後前往第三方金流的結帳頁。若只販售少量數位商品,未必需要自建整套商店。

情境 D:完整網路商店。 訪客可以挑商品、加入購物車、使用折價券、付款與追蹤訂單。購物車的畫面本身可以在瀏覽器運作,但付款結果、訂單和庫存不能只依賴訪客裝置上的資料。

那 API、資料庫、SSR 是什麼?

這三個名詞可以先用一個簡單比喻理解:

  • 資料庫像倉庫或檔案櫃:保存會員、報名、商品和訂單等紀錄。
  • API 像服務窗口:讓網站向其他系統送出請求、取得資訊或要求執行工作,例如「幫我查這個會員的訂單」。
  • SSR 像現場製作頁面:有人打開網站時,伺服器才依當下需要產生畫面,例如顯示該會員的個人資料頁。

資料庫不是 API 的一種。 網站可以透過 API 讀寫資料庫,也可能由伺服器程式直接存取資料庫;而 API 也可以用於寄信、查詢資訊或收款,完全不需要碰資料庫。

三者不是一定要綁在一起使用。例如,嵌入外部表單服務不需要你自建資料庫;有資料庫的網站也不一定要每頁都用 SSR。

進一步的技術名詞可以參考本文最後的「常見專有名詞」。

怎麼選擇?

從最少且足夠的能力開始:

  • 只有文字與圖片? 先用靜態 HTML。
  • 需要計算、測驗或搜尋? 加入原生 JavaScript。
  • 互動介面越來越複雜? 考慮一套框架與 Islands。
  • 需要表單、會員、付款或保存資料? 先看現成服務能否完成;需要自行管理私人資料或訂單時,再規劃安全的後端。

它們是可以搭配的工具,不是一定要一路升級的四個階段。


常見專有名詞

名詞簡單解釋
Astro以內容為中心的網站框架,可產生靜態頁面並按需加入互動或後端能力。
HTML描述網頁內容與結構的標記語言。
CSS控制網頁的排版、顏色與視覺樣式。
JavaScript(JS)讓瀏覽器執行互動、運算與資料操作的程式語言。
SSG(靜態網站生成)建置時先產生 HTML,訪客直接取得完成的頁面。
CSR(客戶端渲染)由瀏覽器的 JavaScript 產生或更新畫面。
SSR(伺服器端渲染)每次有請求時,由伺服器產生 HTML。
Islands(群島架構)大多數頁面維持靜態,只讓需要互動的區塊載入相關 JavaScript。
Hydration(水合)讓已渲染的介面載入客戶端程式,啟動互動功能。
API(應用程式介面)不同系統交換資料或呼叫功能的方式。
資料庫(Database)儲存並管理會員、商品、訂單等可持續更新的資料。
Webhook外部服務發生事件後,主動通知指定的伺服器端點,例如付款完成。
Session(工作階段)用來維持登入狀態的機制,通常需要搭配安全的身分驗證。
Endpoint(端點)接收請求並回應資料或操作結果的特定網址。
Adapter(部署轉接器)協助 Astro 的伺服器程式配合 Cloudflare、Node.js 等環境運作。
Client Island在瀏覽器執行互動邏輯的局部框架元件。
Server Island由伺服器獨立渲染的局部動態內容,與 Client Island 不同。

React、Vue、Svelte 是什麼?

這三者都可以協助建立互動式使用者介面,也都能和 Astro 整合。

框架/函式庫特色常見用途
React元件生態豐富,善於管理複雜的互動狀態儀表板、複雜應用介面
Vue模板語法直觀、響應式資料更新容易理解表單、互動介面、篩選工具
Svelte以編譯方式處理元件,語法相對精簡小工具、動畫、互動元件

三者並沒有固定職務;相同功能通常都能實作。Astro 則負責組裝整個網站,決定哪些地方需要載入這些互動元件。

延伸閱讀