Skip to main content

使用 Hugo Yore 建立現代化的文檔網站

文檔網站的建立工具有百百種,不同方式的選擇本站在 SSG 工具比較裡面已經詳細撰寫了親身實測經驗,那麼更具體的該怎麼選呢?開頭先不吹筆者自己做的 Hugo Yore,平心而論,在一眾文檔 SSG 工具裡面挑,筆者大概會這樣推薦:

文字版
  1. 需要極致順暢,那就用 Docusaurus 或 Vitepress,都有框架 hydration 做局部更新和預取,都非常順,核心選擇還是在框架上,尤其現在都用 AI 開發了,使用框架不再是大問題
  2. 不追求極致順暢,那就用 Astro Starlight,構建結果是原生的 HTML/JS/CSS,沒有預取,Astro 框架近兩年(2024-2026)也非常受歡迎
  3. 不建議 Hugo,原因如核心缺點所述
  4. Sphinx, docmd 只有在需求恰恰好中了他們的優勢才選用
  5. Mkdocs 開發者本身就是風險,不推薦,或是使用社群開發用 Rust 寫的後繼 Zensical

不過如果您的需求剛剛好碰不到 Hugo 核心缺點指出的問題,文中提到的其他缺點你也完全能接受,那 Hugo 當然就很適合你了,因為對你而言 Hugo 是只有優點的框架。

那麼筆者從 Hugo 用戶到主題開發者的經驗同樣也很能幫助你選擇哪個 Hugo 文檔主題更好,答案只有一個,就是筆者自己開發的 Hugo Yore,因為對比同樣類型的 Hugo 主題是全方位的勝出。

Hugo 的文檔主題主要有以下幾個選項:

其中閃白屏黑屏閃光彈炸眼睛的網站連考慮都不用直接刪除,這是基礎中的基礎,連基礎都做不好不可能把其他東西做好,這是顯而易見的邏輯問題,1+1 都不會算了你還要求他會微積分。

所以現在就是 Yore 和其他四個比較了,你可以說是筆者敝帚自珍,但是對比其他主題,筆者認為 Yore 是碾壓級別的存在:

  1. 瀏覽流暢(speculationrules 預取預渲染),關鍵 JS 全部 inline(light-dark, a11y, 文檔摺疊還原, 文檔捲軸高度自動還原)
  2. 光是文檔還原就已經遙遙領先所有 Hugo 主題的競爭對手:docsy、hextra、hinode、doks、book,沒有任何一個對手做到還原,這代表只有 Yore 切換頁面後導航欄不會跳動,其餘所有對手都會跳動
  3. 不只是還原,還是無閃爍的還原,在頁面渲染「前」就已經還原好1
  4. 符合嚴格 CSP 規定,內建 hash 自動生成功能,security headers 得分 A+
  5. Yore 不只客戶端瀏覽流暢,連伺服器端的構建速度都很快。Yore 大量利用快取功能,實測構建速度同樣領先對手,快 6~13 倍
  6. 前面幾點已經透露 Yore 不抗拒 JS 並且利用 JS 優化瀏覽體驗,但是完全不必擔心效能問題,Yore 極度輕量,25KB CSS/10KB JS(Gzipped),設定非關鍵內容使用延遲載入更是沒有任何對手有做,成果就是 Google PSI mobile/desktop 四項指標兩種測試皆為 100 分全部滿分
  7. Markdown 全文複製、footnote tooltip 這類錦上添花的小功能更不用說,Yore 全都內建
  8. Yore 在無障礙體驗下了很多功夫,各種元件設定直接照著 APG 指引 和 Google 官方出品的 modern-web-guidance 完成,不只是能動,而且語意正確符合「瀏覽器官方」的建議用法,你不可能會說有人的實作比瀏覽器本身的建議更好吧。Yore 不會說自己的 a11y 完美,但是絕對遠遠好過所有同類型 Hugo 對手
  9. Yore 甚至還支援 a11y panel,支援高對比、降低動畫、降低透明度、連結底線,連 Docusaurus/Vitepress/Rspress/MkDocs 這些大型專案都沒包含
  10. Yore 是後進者優勢,Yore 是筆者看了一大堆臃腫、不符合 HTML/JS/Hugo/a11y/UI/UX 最佳實踐的網站後,吸取教訓建立的網站,不用取捨,Yore 已經把全部都做到最好

讀者看完這段應該眼花撩亂了,所以現代化在哪裡?直接整理出來:

  1. 照 GoogleChrome 瀏覽器官方出品的指南完成,絕對現代,絕對正確
  2. 天下武功為快不破,構建很快(6~13 倍),瀏覽也很快(預取,輕量,inline JS,資源延遲加載)
  3. 功能全面(15+ 功能,25+ 短碼
  4. 內建現代安全 header 支援
  5. 大幅度優化 a11y 無障礙瀏覽體驗2

Footnotes​

  1. 感謝 Starlight,無閃爍的做法是利用 custom element,從 Starlight 學來的。 ↩

  2. 如果不清楚網站無障礙功能到底有什麼影響,請見無障礙簡介。 ↩