Skip to content

改用 Astro 寫部落格

Published: 2 分鐘

雖然還是沒什麼想寫的,但是原先使用 Hexo 的部落格經過這麼久感覺有點生疏了!剛好作為改換新工具的理由。選擇 Astro 作為新的部落格工具,其實也沒什麼特別原因。只不過決定要更新部落格後,稍微搜尋一下當前適合的工具,Astro 剛好適合罷了!話雖如此,它還是有特別的地方值得介紹。

Update 2024-01-08: 原先使用 CloudFlare Pages 與 GitHub 的整合來自動建置與部署,但是 CloudFlare Pages 的建置環境(Node)產生的 OG 圖檔中文字無法顯示,後來改用 GitHub Actions 來建置網站再部署到 CloudFlare Pages。

支援 SSR

跟 Hexo 一樣,Astro 也可以作為靜態網站產生器,自然適合山姆鍋原本撰寫文章的流程。另外,Astro 也支援 Server-side redenering (SSR),如果選擇 CloudFlare Pages 或者 Netilify 這類寄存(hosting)服務,可以方便擴展使用後端 API 服務來實現動態功能。例如:聯絡表單可以透過後端 API 來寄送訊息到個人的收件匣。

自動產生 OG 圖檔

為了讓文章在分享時可以有一個好看的連結預覽(link preview),習慣要提供一個 OpenGraph 圖檔。過往都是選用免費圖檔,除了需要加上連結給予提供者必要的 credits 外,也常常找不到適合文章主題的圖檔。這次新的更新,每篇文章都會使用標題自動產生一個 OpenGraph 圖檔。雖然不是很漂亮,但可以節省下不少時間。

例如下面是本文的 OpenGraph 圖檔: Asto Blog

原本產生 OG 圖檔,中文字會出現重疊的現象。後來改用 Google NotoSansTC 字型就避開這個問題。

可選用不同的元件框架

Astro 可以將不同的 UI 框架,例如:React, Vue 等,的元件整合到頁面或者文章內容中。這個特色應該很有用,例如:在文章中渲染一個互動式的圖表。

小結

為了減少部落格轉換所需的時間,直接選用 AstrpPaper 這個主題,其背後使用 TypeScript 作為程式語言,Tailwind 作為樣式引擎,也整合了一個簡單的文章搜尋功能。 AstroPaper 的存在是決定轉換成 Astro 的最大誘因。

郭信義 (Sam Kuo)

奔騰網路科技技術長,專長分散式系統、Web 應用與雲端服務架構、設計、開發、部署與維運。工作之餘,喜歡關注自由軟體的發展與應用,偶爾寫一下部落格文章。