2019 年,我寫了一篇〈為什麼選用 Hexo 來寫部落格〉。當時比較 Jekyll、Hugo 與 Hexo,最後因為熟悉 Node.js、外掛與主題選擇多,加上 NexT Theme 的黑白配色很符合大魔術熊貓工程師,於是選了 Hexo。
七年後,我把同一個部落格搬到 Astro 6。這不代表 2019 年的選擇錯了,而是原本用來做決策的條件已經改變。
2019 年真正要解決的問題
當時我想從 Evernote 走出來,建立一個不用長期維護伺服器的技術部落格。選型時最在意的是:
- 能不能快速開始寫文章。
- Windows 與 macOS 的開發環境是否容易處理。
- 有沒有成熟的主題與外掛。
- 自己熟不熟悉底層生態系。
- 靜態網站能不能低成本部署。
Hexo 很符合這些條件。Node.js 是熟悉的工具,NexT Theme 很快就能得到完整的文章、分類、標籤與側欄,GitHub Pages 也不需要另外維護主機。
如果把時間拉回 2019 年,我仍然會先從這些條件做決定。技術選型不能拿 2026 年的需求,回頭批評七年前的自己。
七年後,問題從「怎麼開始」變成「怎麼保留」
部落格停更期間,我不是沒有寫文章,而是把主要創作放到 iThome 鐵人賽。重新啟動時,舊站已經累積 35 篇公開文章、139 個 HTML 路徑、Disqus identity、搜尋引擎 canonical,以及大小寫不同的歷史 alias。
這時最重要的已經不是再找一個漂亮 Theme,而是以下四件事。
文章資料要能被檢查
舊 front matter 可以自由增減欄位,彈性很高,但欄位拼錯或缺少時,問題可能一直到頁面輸出才被看到。
新版用 Astro Content Collections 與 Zod schema 固定 publishedAt、updatedAt、legacyPath、canonicalPath、draft 與 disqusIdentifier。build 不只是產生 HTML,也會先檢查文章資料是否符合契約。
URL 不應跟著分類變動
舊文章沿用 /:category/:title.html,因此每篇都明確保存 legacyPath。新文章則使用 /posts/<stable-slug>.html,分類只負責導覽,不再決定實體網址。
這個差異看起來只是多一個欄位,實際上改變了維護方式。未來把文章從 AI 移到別的分類,不會順便改掉搜尋結果、外部連結與留言 identity。
設計要能逐步替換
套用完整 Theme 的好處是開始得快,代價是視覺、模板與功能通常一起綁進來。當年這個交換很合理;現在則希望年度導覽、文章卡片、搜尋與版面 tokens 能各自修改,不必先理解整套 Theme 的覆寫規則。
Astro 元件讓這些邊界比較容易拆開,但這不是「元件化一定比較好」。如果目標是迅速建立一個標準技術部落格,成熟 Theme 仍可能比自己維護元件省事。
驗證要能重複執行
新站沒有把「首頁看起來正常」當成完成。遷移腳本會檢查 139 個舊 HTML 路徑、文章結構、內部連結、圖片 metadata、accessibility、秘密字串、SEO 與 Disqus。
框架能提供 build,卻不會自動知道舊站有哪些不能消失的行為。這些 checker 才是長期維護時真正能反覆使用的資產。
我現在怎麼選
如果今天重新面對一個全新的內容網站,我會先用下面四個問題縮小選擇,而不是先比較 GitHub stars 或宣稱誰建置最快。
| 問題 | 偏向 Theme 型產生器 | 偏向 Astro |
|---|---|---|
| 想多快得到完整部落格功能? | 希望套用既有 Theme 後立即開始寫 | 願意自己定義元件與內容結構 |
| 內容欄位是否需要嚴格 schema? | front matter 保持簡單即可 | build 前必須驗證資料契約 |
| 網址與 SEO 是否有複雜歷史? | 全新網站或路徑規則單純 | 需要逐頁控制 route、alias 與 metadata |
| 功能會不會持續客製? | 主要跟著 Theme 能力走 | 搜尋、卡片、版面與資料層要分開演進 |
Hexo 並沒有因為我改用 Astro 就失去價值。以下情況,我仍會認真考慮 Hexo:
- 想快速建立典型技術部落格。
- 已經找到適合且願意長期使用的 Theme。
- 現有外掛可以處理需求,不需要大量客製。
- 團隊熟悉 Hexo 的設定、模板與部署流程。
反過來,如果內容本身有明確 schema、既有 URL 很複雜,或網站已經不只是文章列表,Astro 的 Content Collections、檔案路由與元件模型會比較貼近問題。
不要把換框架當成重寫歷史
這次沒有刪掉 2019 年的原文,也沒有把它改成「早知道就用 Astro」。舊文章保留當時的判斷,新文章則交代條件如何變化。
技術選型的價值不在於七年後仍然猜中同一個答案,而是讓人看得懂當時依據什麼做決定。條件變了,可以換工具;條件沒有說清楚,再新的框架也只是在追下一個名字。
Discussion
文章留言
留言服務會連線到 Disqus;只有在你選擇載入後才會建立外部連線。