跳船, Gatsby -> Astro


最近在把notion搬到去Obsidian的途中,忽發奇想,想把所有的blog post都整合到Obsidian當中。 然後就問GPT,最近有什麼好用的靜態網站生成器 - 然後就發現了Astro

Why Not Gatsby?

木村拓哉沒代言了

我每次隔很久再開Gatsby,基本上要把所有Plugin都升級一次,然後就會發現有些Plugin不再維護🤷‍♂️

然後React的生態圈,你也知道隔一兩年又一次大更新,改個版本舊的東西就看不爽,然後就要重構。 像我這種懶人,三年後回來看一次基本上就等於重寫網站了。

所以這次認真想一下,理想上的靜態網站生成器應該是

  • 維諼成本低
  • 直觀,再學習曲線低

第一次接觸

一打開看到.astro差點想立即棄坑

一種把HTML混合JS/JSX/TSX的感覺,然後再自己創一堆東西出來。 然後把css也放進去,我心想之前什麼分開css和js的,現在又回到一起了?

但本萫有AI幫我寫,然後就開始了。 想試著把本來的Blo搬過來,但發覺只花一兩個小時就搞定了。 回歸最原始的HTML/CSS,很多小改動都可以即時看到效果,然後又不需要等webpack compile完才可以看到。 然後又不需要over complicated把所有東西都元件化。

所有的東西都很makes sense。就感覺比Hugo多很多功能,然後又比Gatsby簡單。

用後感

先說優點

  • 自帶scoped css
  • 仍然可以寫component in ts
  • IDE支援很好(webstorm)
  • 學習曲線偏容易
  • 偏譯是間比Gatsby快太多了

花了半天基本上就把原版Gatsby重寫成Astro,目前唯一遇到的小問題是沒辦法在markdown中的內文用delimiter 來定義excerpt,相方在Gatsby中可以透過plugin來完成。另行實裝render又沒辦法渲染成完本的style,有點美中不足。

據官網的定義,Astro就是拿來做內容為主的網站,優勢是上手容易及高效能。其貼近原生HTML及CSS使得維護成本偏低,並且不需要綁定任何前端framework是一個大賣點。一個靜態網頁要的功能都有具備,當然你想寫複雜點的SPA還是乖乖的回到React去。

感覺Astro會是未來一段時間的靜態網頁主流。