<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hugo on Commentary of Takao</title><link>https://takao.blog/zh-tw/tags/hugo/</link><description>Recent content in Hugo on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Commentary of Takao</copyright><lastBuildDate>Fri, 05 Jun 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://takao.blog/zh-tw/tags/hugo/index.xml" rel="self" type="application/rss+xml"/><item><title>為 Hugo 部落格設計現代內容安全策略</title><link>https://takao.blog/zh-tw/web/hugo-latest-csp-best-practices-2026/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/hugo-latest-csp-best-practices-2026/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/hugo-latest-csp-best-practices-2026-zh-tw.png" alt="Featured image of post 為 Hugo 部落格設計現代內容安全策略" /&gt;&lt;h2 id="為什麼-csp-對於靜態網站很重要"&gt;為什麼 CSP 對於靜態網站很重要
&lt;/h2&gt;&lt;p&gt;使用 Hugo 建立的靜態網站本質上比動態應用程式更安全，但它們仍然執行用於分析、廣告和嵌入的第三方腳本。 &lt;strong&gt;內容安全策略 (CSP)&lt;/strong&gt; 透過控制可以載入的資源來保護您的訪客免受 XSS、資料注入和惡意腳本執行的侵害。&lt;/p&gt;
&lt;h2 id="透過-cloudflare-pages-設定-csp"&gt;透過 Cloudflare Pages 設定 CSP
&lt;/h2&gt;&lt;p&gt;Cloudflare Pages 支援自訂 &lt;code&gt;_headers&lt;/code&gt; 檔案來控制 HTTP 回應標頭：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# static/_headers
/*
 Content-Security-Policy: default-src &amp;#39;self&amp;#39;; script-src &amp;#39;self&amp;#39;; style-src &amp;#39;self&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;對於 Hugo，將 &lt;code&gt;_headers&lt;/code&gt; 檔案放在 &lt;code&gt;static/&lt;/code&gt; 目錄中，以便將其複製到輸出：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;static/
├── _headers
├── css/
└── js/
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="為-hugo-建構現實的-csp"&gt;為 Hugo 建構現實的 CSP
&lt;/h2&gt;&lt;p&gt;使用 Google AdSense、Google Analytics 和嵌入式 YouTube 影片的部落格需要更寬鬆的政策。這是一個生產就緒的 CSP：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# static/_headers
/*
 Content-Security-Policy:
 default-src &amp;#39;self&amp;#39;;
 script-src &amp;#39;self&amp;#39;
 &amp;#39;strict-dynamic&amp;#39;
 &amp;#39;sha256-...&amp;#39; (inline script hash)
 https://www.googletagmanager.com
 https://pagead2.googlesyndication.com
 https://www.youtube.com;
 style-src &amp;#39;self&amp;#39;
 &amp;#39;sha256-...&amp;#39; (inline style hash)
 https://fonts.googleapis.com;
 img-src &amp;#39;self&amp;#39;
 https://*.googleapis.com
 https://*.googlesyndication.com
 https://www.google.com
 https://*.doubleclick.net
 https://*.youtube.com
 data:;
 font-src &amp;#39;self&amp;#39;
 https://fonts.gstatic.com;
 frame-src &amp;#39;self&amp;#39;
 https://www.youtube.com
 https://www.google.com;
 connect-src &amp;#39;self&amp;#39;
 https://*.google-analytics.com;
 report-uri /csp-report;
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="使用隨機數與哈希值"&gt;使用隨機數與哈希值
&lt;/h2&gt;&lt;p&gt;對於內嵌腳本（在 Hugo 主題中常見），您有兩個選項：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;隨機數字&lt;/strong&gt;（每個請求唯一）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nonce&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;ABC123&amp;#34;&lt;/span&gt;&amp;gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;safe&amp;#34;&lt;/span&gt;)&amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;客戶服務提供者：&lt;code&gt;script-src 'nonce-ABC123'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;隨機數最適合動態站點，但需要伺服器端生成，這對於完全靜態的 Hugo 站點來說很困難。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;哈希&lt;/strong&gt;（基於內容）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;&lt;span style="color:#a6e22e"&gt;console&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;log&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;safe&amp;#34;&lt;/span&gt;)&amp;lt;/&lt;span style="color:#f92672"&gt;script&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;客戶服務提供者：&lt;code&gt;script-src 'sha256-...'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;哈希對於靜態站點來說是理想的選擇，因為它們在部署過程中保持不變。計算內聯腳本的雜湊值並將其新增至策略中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo -n &lt;span style="color:#e6db74"&gt;&amp;#39;console.log(&amp;#34;safe&amp;#34;)&amp;#39;&lt;/span&gt; | openssl dgst -sha256 -binary | base64
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="理解嚴格動態"&gt;理解嚴格動態
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;'strict-dynamic'&lt;/code&gt; 指令是一項強大的 CSP 功能。它告訴瀏覽器信任由已信任腳本載入的腳本，從而減少枚舉所有 CDN URL 的需要：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;script-src &amp;#39;self&amp;#39; &amp;#39;strict-dynamic&amp;#39; &amp;#39;sha256-ABC...&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;使用 &lt;code&gt;strict-dynamic&lt;/code&gt; ，如果您的主套件（透過雜湊受信任）載入 CDN 腳本，則該 CDN 腳本會自動受信任。這顯著簡化了具有許多第三方腳本的網站的 CSP 管理。&lt;/p&gt;
&lt;h2 id="google-adsense-的-csp"&gt;Google AdSense 的 CSP
&lt;/h2&gt;&lt;p&gt;AdSense 需要特定的 CSP 津贴。主要指令：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;指令&lt;/th&gt;
					&lt;th&gt;所需來源&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;腳本-src&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://pagead2.googlesyndication.com&lt;/code&gt;、&lt;code&gt;'unsafe-inline'&lt;/code&gt;（或雜湊）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;img-src&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://*.googlesyndication.com&lt;/code&gt;、&lt;code&gt;https://*.doubleclick.net&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;框架-src&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;佔位符_0&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;考慮僅將 &lt;code&gt;'unsafe-inline'&lt;/code&gt; 作為最後的手段 - 哈希值更好。&lt;/p&gt;
&lt;h2 id="雲端服務提供者報告"&gt;雲端服務提供者報告
&lt;/h2&gt;&lt;p&gt;設定 &lt;code&gt;report-uri&lt;/code&gt; 或 &lt;code&gt;report-to&lt;/code&gt; 指令以接收違規報告：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Content-Security-Policy: ...; report-uri /csp-report;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;您可以使用 &lt;strong&gt;report-uri.com&lt;/strong&gt; 或 &lt;strong&gt;Cloudflare CSP Analytics&lt;/strong&gt; 等服務來收集和視覺化報告。這有助於識別被阻止的資源而不破壞功能。&lt;/p&gt;
&lt;h2 id="測試您的-csp"&gt;測試您的 CSP
&lt;/h2&gt;&lt;p&gt;在部署之前，使用 &lt;code&gt;Content-Security-Policy-Report-Only&lt;/code&gt; 進行限制性策略測試：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Content-Security-Policy-Report-Only: default-src &amp;#39;self&amp;#39;; report-uri /csp-report;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;該標頭除了發送違規報告外什麼也不強制執行，讓您安全地識別問題。&lt;/p&gt;
&lt;h2 id="結論"&gt;結論
&lt;/h2&gt;&lt;p&gt;配置良好的 CSP 可保護 Hugo 部落格訪客免受 XSS 和腳本注入的侵害，同時允許合法的第三方服務運作。透過僅報告模式結合 &lt;code&gt;strict-dynamic&lt;/code&gt;、腳本雜湊和增量部署，您可以建立強大的安全態勢，平衡保護與功能。&lt;/p&gt;</description></item><item><title>2026 靜態站點產生器：Astro、Hugo 與 11ty</title><link>https://takao.blog/zh-tw/web/static-site-generators-2026-comparison/</link><pubDate>Tue, 05 May 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/static-site-generators-2026-comparison/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/static-site-generators-2026-comparison-zh-tw.png" alt="Featured image of post 2026 靜態站點產生器：Astro、Hugo 與 11ty" /&gt;&lt;h2 id="2026-靜態站點產生器astrohugo-與-11ty"&gt;2026 靜態站點產生器：Astro、Hugo 與 11ty
&lt;/h2&gt;&lt;p&gt;2026 年的靜態站點生成器格局比以往任何時候都更加多樣化。開發人員可以在基於 Go 的速度極快的 &lt;strong&gt;Hugo&lt;/strong&gt;、島嶼架構先驅 &lt;strong&gt;Astro&lt;/strong&gt; 和極簡、靈活的 &lt;strong&gt;11ty&lt;/strong&gt; (Eleventy) 之間進行選擇。每個工具都在不同的場景中表現出色——了解它們的權衡對於為您的專案選擇正確的工具至關重要。&lt;/p&gt;
&lt;p&gt;此比較從建置速度、範本、內容管理、影像最佳化、i18n 和部署方面對它們進行評估。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="建構速度"&gt;建構速度
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;SSG&lt;/th&gt;
					&lt;th&gt;語言&lt;/th&gt;
					&lt;th&gt;建置時間（10k 頁）&lt;/th&gt;
					&lt;th&gt;冷啟動&lt;/th&gt;
					&lt;th&gt;開發伺服器重新載入&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;雨果&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;去&lt;/td&gt;
					&lt;td&gt;〜3-5秒&lt;/td&gt;
					&lt;td&gt;即時&lt;/td&gt;
					&lt;td&gt;〜50ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;天文學&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Node.js（打字稿）&lt;/td&gt;
					&lt;td&gt;~45-90 年代&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;約 200 毫秒&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;11歲&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Node.js（JavaScript）&lt;/td&gt;
					&lt;td&gt;〜60-120秒&lt;/td&gt;
					&lt;td&gt;中&lt;/td&gt;
					&lt;td&gt;約 300 毫秒&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Hugo&lt;/strong&gt; 在建造速度方面擊敗了競爭對手。其基於 Go 的架構可在幾秒鐘內處理數千個頁面，使其成為大型文件網站和部落格的理想選擇。 &lt;strong&gt;Astro&lt;/strong&gt; 為其功能集提供了出色的速度，尤其是其部分補水方法。 &lt;strong&gt;11ty&lt;/strong&gt; 在大型站點上速度較慢，但其簡單性意味著小型專案的開銷更少。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="模板化和靈活性"&gt;模板化和靈活性
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Hugo&lt;/strong&gt; 使用 Go 範本及其自己的 &lt;code&gt;.RenderShortcodes&lt;/code&gt; 管道。學習曲線很陡——Go 模板語法很特殊——但短代碼系統很強大。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-hugo-html" data-lang="hugo-html"&gt;{{ $pages := where .Site.RegularPages &amp;#34;Section&amp;#34; &amp;#34;blog&amp;#34; }}
{{ range $pages }}
 &amp;lt;article&amp;gt;
 &amp;lt;h2&amp;gt;&amp;lt;a href=&amp;#34;{{ .RelPermalink }}&amp;#34;&amp;gt;{{ .Title }}&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
 &amp;lt;p&amp;gt;{{ .Summary }}&amp;lt;/p&amp;gt;
 &amp;lt;/article&amp;gt;
{{ end }}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Astro&lt;/strong&gt; 使用 &lt;code&gt;.astro&lt;/code&gt; 元件文件，將 HTML、JavaScript 和 CSS 混合在單一文件元件模型中。它透過其島嶼架構支援 UI 框架（React、Vue、Svelte、Solid）。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-astro" data-lang="astro"&gt;---
const { posts } = Astro.props;
---
{posts.map(post =&amp;gt; (
 &amp;lt;article&amp;gt;
 &amp;lt;h2&amp;gt;&amp;lt;a href={post.url}&amp;gt;{post.title}&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
 &amp;lt;p&amp;gt;{post.excerpt}&amp;lt;/p&amp;gt;
 &amp;lt;/article&amp;gt;
))}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;11ty&lt;/strong&gt; 允許您選擇範本語言：Nunjucks、Liquid、Handlebars、EJS 或原始 JavaScript。這種無與倫比的靈活性是 11ty 的超能力。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-njk" data-lang="njk"&gt;{% for post in collections.blog %}
&amp;lt;article&amp;gt;
 &amp;lt;h2&amp;gt;&amp;lt;a href=&amp;#34;{{ post.url }}&amp;#34;&amp;gt;{{ post.data.title }}&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
 &amp;lt;p&amp;gt;{{ post.data.excerpt }}&amp;lt;/p&amp;gt;
&amp;lt;/article&amp;gt;
{% endfor %}
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="內容管理"&gt;內容管理
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;特色&lt;/th&gt;
					&lt;th&gt;雨果&lt;/th&gt;
					&lt;th&gt;天文學&lt;/th&gt;
					&lt;th&gt;11 歲&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;內容類型&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Markdown，自訂 frontmatter&lt;/td&gt;
					&lt;td&gt;Markdown、MDX、內容集&lt;/td&gt;
					&lt;td&gt;Markdown，任何格式&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;分類&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;標籤、類別、自訂&lt;/td&gt;
					&lt;td&gt;基於 Frontmatter 的&lt;/td&gt;
					&lt;td&gt;基於標籤/集合&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;資料檔&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;data/&lt;/code&gt; 中的 YAML/TOML/JSON&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;src/data/&lt;/code&gt; 中的 YAML/JSON&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;_data/&lt;/code&gt; 中的 JS 模組&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;無頭 CMS&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Decap CMS、CloudCannon&lt;/td&gt;
					&lt;td&gt;Decap CMS、Sanity、Storyblok&lt;/td&gt;
					&lt;td&gt;Decap CMS，任何基於 JS 的 CMS&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所有這三個都支援 Markdown frontmatter。 &lt;strong&gt;Astro 的 Content Collections&lt;/strong&gt; 透過 Zod 架構提供類型安全的 frontmatter 驗證，這是團隊中出色的功能。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Astro Content Collection schema
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;import&lt;/span&gt; { &lt;span style="color:#a6e22e"&gt;defineCollection&lt;/span&gt;, &lt;span style="color:#a6e22e"&gt;z&lt;/span&gt; } &lt;span style="color:#66d9ef"&gt;from&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;astro:content&amp;#39;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;blogCollection&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;defineCollection&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;schema&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;z.object&lt;/span&gt;({
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;z.string&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;date&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;z.date&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;tags&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;z.array&lt;/span&gt;(&lt;span style="color:#a6e22e"&gt;z&lt;/span&gt;.&lt;span style="color:#66d9ef"&gt;string&lt;/span&gt;()).&lt;span style="color:#a6e22e"&gt;optional&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;});
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="影像優化"&gt;影像優化
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Hugo&lt;/strong&gt; — 透過 &lt;code&gt;.Resize&lt;/code&gt;、&lt;code&gt;.Fill&lt;/code&gt;、&lt;code&gt;.Fit&lt;/code&gt; 和 &lt;code&gt;.Filter&lt;/code&gt; 進行內建影像處理。支援WebP AVIF輸出。零配置但命令式語法。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-hugo-html" data-lang="hugo-html"&gt;{{ $image := .Resources.Get &amp;#34;photo.jpg&amp;#34; }}
{{ $thumb := $image.Fill &amp;#34;400x300 webp&amp;#34; }}
&amp;lt;img src=&amp;#34;{{ $thumb.RelPermalink }}&amp;#34; width=&amp;#34;400&amp;#34; height=&amp;#34;300&amp;#34;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Astro&lt;/strong&gt; — &lt;code&gt;@astrojs/image&lt;/code&gt; （或 Astro 的內建 &lt;code&gt;Image&lt;/code&gt; 元件）提供自動最佳化、響應式 srcsets 和延遲載入。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-astro" data-lang="astro"&gt;---
import { Image } from &amp;#39;astro:assets&amp;#39;;
---
&amp;lt;Image src={/photos/photo.jpg} alt=&amp;#34;Photo&amp;#34; width={400} height={300} format=&amp;#34;webp&amp;#34; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;11ty&lt;/strong&gt; — 無內建影像處理。使用 &lt;code&gt;eleventy-img&lt;/code&gt; 外掛程式來實現類似的功能。更多設定但完全控制。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="國際化i18n"&gt;國際化（i18n）
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;SSG&lt;/th&gt;
					&lt;th&gt;i18n 支援&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;雨果&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;本地多語言、每種語言的內容目錄、翻譯連結&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;天文&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;@astrojs/i18n&lt;/code&gt;（2025 年以上穩定），基於 URL 的區域設定路由&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;11歲&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;社群插件，手動擷取為主的方法&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Hugo&lt;/strong&gt; 擁有最成熟的 i18n 系統，具有內建的翻譯管理和回退行為。 &lt;strong&gt;Astro&lt;/strong&gt; 的 i18n 支援已經顯著成熟，提供 URL 前綴、區域設定檢測和翻譯功能。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="部署和生態系統"&gt;部署和生態系統
&lt;/h2&gt;&lt;p&gt;所有這三個都部署到任何靜態主機（Netlify、Vercel、Cloudflare Pages、AWS S3）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hugo&lt;/strong&gt; — 單一二進位部署，無運行時依賴&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Astro&lt;/strong&gt; — 可部署為靜態或 SSR（Node.js、Deno、邊緣函數）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;11ty&lt;/strong&gt; — 零運行時靜態輸出&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="用例推薦"&gt;用例推薦
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;使用案例&lt;/th&gt;
					&lt;th&gt;推薦SSG&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;大型文件網站&lt;/strong&gt;（5000+ 頁）&lt;/td&gt;
					&lt;td&gt;雨果&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;具有框架組件的行銷網站&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;天文學&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;簡單的部落格/個人網站&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;11ty 或雨果&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;電子商務登陸頁面&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;天文學&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;多語言公司網站&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;雨果&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;自訂建置管道/現有範本&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;11 歲&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SSR + 靜態混合&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;天文&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="結論"&gt;結論
&lt;/h2&gt;&lt;p&gt;2026 年沒有單一的「最佳」靜態網站產生器 - 正確的選擇取決於您的特定要求。 &lt;strong&gt;Hugo&lt;/strong&gt; 主導原始建置速度和多語言網站。 &lt;strong&gt;Astro&lt;/strong&gt; 在組件驅動架構和框架整合方面領先於開發人員體驗。 &lt;strong&gt;11ty&lt;/strong&gt; 仍然是極簡主義和靈活性的冠軍。&lt;/p&gt;
&lt;p&gt;評估專案的規模、團隊專業知識和功能需求。擁有 100 篇貼文的部落格在任何 SSG 上都表現良好。 50,000 頁的企業文件入口網站將受益於 Hugo 的速度。具有互動式 React 小工具的內容網站是 Astro 的最佳選擇。做出相應的選擇，您的靜態網站將變得快速、可維護且面向未來。&lt;/p&gt;</description></item><item><title>如何 Set Up Hugo: Complete 指南 for 初學者s</title><link>https://takao.blog/zh-tw/web/hugo-setup/</link><pubDate>Wed, 23 Aug 2023 00:00:00 +0900</pubDate><guid>https://takao.blog/zh-tw/web/hugo-setup/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/hugo-setup-zh-tw.png" alt="Featured image of post 如何 Set Up Hugo: Complete 指南 for 初學者s" /&gt;&lt;h1 id="how-to-install-hugo---static-site-generator-installation-instructions"&gt;How to install Hugo - Static Site Generator Installation Instructions
&lt;/h1&gt;&lt;p&gt;Hugo is a fast and simple static site generator and tool that makes building websites easy. This article details the steps to install Hugo.&lt;/p&gt;
&lt;h2 id="step-1-download-hugo"&gt;Step 1: Download Hugo
&lt;/h2&gt;&lt;p&gt;To install Hugo, first download the appropriate version of the Hugo binary from the official download page.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;go to &lt;a class="link" href="https://gohugo.io/getting-started/installing/" target="_blank" rel="noopener"
 &gt;the official Hugo download page&lt;/a&gt;. 2.&lt;/li&gt;
&lt;li&gt;select the installation method appropriate for your operating system (Windows, macOS, Linux, etc.)&lt;/li&gt;
&lt;li&gt;open a terminal (command prompt) and follow the instructions to download the Hugo binary.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="step-2-confirm-installation"&gt;Step 2: Confirm installation
&lt;/h2&gt;&lt;p&gt;After the Hugo binary has been downloaded, verify that the installation was successful. 1.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;open a terminal and type the following command to check the version of Hugo.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hugo version
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If installed correctly, the Hugo version information will be displayed.&lt;/p&gt;
&lt;h2 id="step-3-start-using-hugo"&gt;Step 3: Start using Hugo
&lt;/h2&gt;&lt;p&gt;Once Hugo has been installed correctly, 讓我們 create a new website. 1.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;open a terminal and navigate to the directory where you want to create the website. 2.&lt;/li&gt;
&lt;li&gt;create a new Hugo site by entering the following command.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hugo new site mywebsite
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Navigate to the website directory.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd mywebsite
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;choose a theme and install it. For example, to use Ananke, the official Hugo theme, enter the following command.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;git clone https://github.com/budparr/gohugo-theme-ananke.git themes/ananke
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;create the website content and generate the website using Hugo.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hugo new post/sample.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can create a new page with this command.&lt;/p&gt;
&lt;p&gt;To build the page, type the following command.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hugo -t ananke
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you are ready to install and use Hugo in a basic way. Proceed to customize and build your website and 享受 the charm of a static site!&lt;/p&gt;
&lt;p&gt;Note: Installation procedures and requirements are subject to change. We recommend that you follow the instructions provided on the official website and in the documentation.&lt;/p&gt;</description></item></channel></rss>