為什麼我要改用 Astro 重構部落格?

508 字

為什麼選擇 Astro?

其實最初代的部落格是用 Hugo,但它的學習曲線偏高,很快我就改用自己比較熟悉的 Next.js,但確實 Next.js 開發一個以「內容為主」的部落格有點大材小用,又看到很多人都把自己的部落格轉到 Astro,我稍微研究了一下,發現 Astro 非常適合我的需求,最終決定搬家。主要原因有以下幾點:

  • 學習曲線低
  • 完美相容 React
  • 效能對比 Next.js 有大大的提升
  • 與 Markdown / MDX 深度綁定
  • 部署到 Vercel 一樣方便

效能提升

Astro 的核心理念是:

預設不送任何 JavaScript 到瀏覽器,只有明確標記為互動的元件(島嶼)才會 hydrate。

這讓我重新思考了什麼東西才需要用到 React:

  • 版面、頁面、靜態 UI.astro(零 JavaScript)
  • 主題切換、搜尋 → React(需要瀏覽器端互動)
  • 後台編輯器 → React(因為有大量狀態管理、即時預覽)

這是我覺得 Astro 最讚的地方,我將文章中的自訂元件(ex. Rating、Highlight)寫成 React 元件,這樣在後台編輯器裡可以即時渲染;但在前台頁面,因為我沒加 client:*,Astro build 時就會自動把它們轉成純靜態的 HTML 標籤!

在重構的過程中,我也移除了原本寫的一些不必要的腳本,讓部落格輕很多。現在前台的文章頁面幾乎沒有多餘的 JS 負擔,PageSpeed 分數也有了明顯提升。

Next.js 部落格行動版 PageSpeed 測試結果截圖(Performance 49 分、SEO 83 分)
Next.js 部落格行動版 PageSpeed 測試
Astro 部落格行動版 PageSpeed 測試結果截圖(Performance 99 分,SEO 得分 100 分)
Astro 部落格行動版 PageSpeed 測試

結論

框架沒有好壞,只有適不適合。

Next.js 是一個很棒的框架,如果需要大量的動態功能,它的 Server Actions、Route Handlers、ISR 都很有用;但一個以靜態內容為主的個人部落格,Astro 的「靜態優先、按需加入互動」更符合需求。


相關文章

Cookie vs LocalStorage vs SessionStorage

Cookie vs LocalStorage vs SessionStorage

深入探討瀏覽器儲存機制:Cookie、LocalStorage 和 SessionStorage 的差異與使用場景,以及如何選擇適合的儲存方式。

前端打包工具 Webpack v.s. Vite

前端打包工具 Webpack v.s. Vite

功能與目的 打包工具的主要目的是整合模組與資源,將代碼編譯為瀏覽器可理解的語法,並進行優化,使部署更加便利。 為什麼需要打包工具? 模組化支持不足 ES6 前,JavaScript 缺乏標準化的模組系統。打包工具通過支持多種模組格式,解決了兼容性問題。 瀏覽器兼容性 將不被舊版瀏覽器支持的新技術(如 ES6)轉譯為可執

© 2024 - 2026 kir4che