天天看點

2023 年靜态站點生成器 SSG 大全

作者:Echa攻城獅
2023 年靜态站點生成器 SSG 大全

大家好,我是Echa。

最近有不少的粉絲私信小編問道:怎麼實作靜态站點頁面?用什麼技術實作?有部分懂技術的粉絲也會問SSG 和SSR有啥差別,是一樣的東西麼?SSG有哪些優點和缺點呢?

小編帶着這些疑問繼續為大家一一講解,今天重點講靜态站點生成器SSG 大全,但是首先要徹底搞明白SSG用來做什麼的:

  • SSG:Static Site Generation,靜态頁面生成;
  • SSR:Server Side Rendering,服務端渲染;

什麼是SSG(static site generator)?

SSG是一種基于原始資料和一組模闆生成完整靜态 HTML 網站的工具。本質上,SSG會自動完成對單個 HTML 頁面進行編碼的任務,并使這些頁面提前準備好為使用者提供服務。因為這些 HTML 頁面是預先建構的,是以它們可以非常快速地加載到使用者的浏覽器中。

SSG是内容管理系統 (CMS) 的替代品——另一種用于管理 Web 内容、生成網頁和實施模闆的工具。

SSG優點

  • 加載速度快 -由于靜态站點生成器是提前建立網頁而不是按需建立網頁(如使用 CMS),是以網頁在使用者浏覽器中的加載速度略快。将HTML發送給用戶端,是以幾乎會立即看到頁面内容。
  • 無需擷取其他用戶端 -理想情況下,伺服器呈現過程将進行所有必需的調用以擷取資料,是以不會從用戶端進行任何其他服務調用。
  • 非常适合SEO
  • 更輕量的後端 -靜态網站是輕量級的,不需要在伺服器端運作那麼多代碼,而基于 CMS 的網站不斷向伺服器端查詢内容。
  • 定制-開發人員可以建立他們想要的任何模闆。它們不受 CMS 提供的字段的限制,也不受 CMS 内置模闆的限制。

SSG缺點

  • 大型頁面可能會很慢 -如果路由很多,速度可能會變慢。
  • 與某些UI庫不相容 -如果你用的某些庫使用了window,那你就要想辦法來解決了。 因為 Node 中沒有window或者 document。
  • 很少或沒有預先建構的模闆-定制的缺點是可能需要更長的時間。許多靜态站點生成器不附帶模闆,開發人員首先必須花費大量時間從頭開始建構它們。
  • 沒有使用者友好的界面-非開發者使用者更難使用靜态站點生成器釋出内容。沒有 CMS 界面,使用原始的未格式化資料可能會讓使用者感到害怕。此外,進行網站更新通常需要開發人員支援。

近年來,建構網站的方式發生了很大變化,出現了很多新的建構網站的方式。靜态站點生成器 (SSG) 就是一種建構網站的現代 Web 開發技術,其正在變得越來越流行!

2023年值得考慮的靜态站點生成器大綱

  1. Next.js
  2. Hugo
  3. Gatsby
  4. Jekyll
  5. Nuxt
  6. Docusaurus
  7. Hexo
  8. Slate
  9. GitBook
  10. Astro
  11. Docsify
  12. VuePress
  13. MkDocs
  14. UmiJS
  15. Eleventy

為了正确審查值得考慮的靜态站點生成器,我們将把它們分為以下兩類:

  • 提供多種渲染方法(包括靜态站點生成)的架構:Gatsby、Next.js、Astro、Nuxt.js和 SvelteKit等等。
  • 僅提供靜态渲染功能的 SSG:Eleventy 和 Hugo。

目前,不分語言的話有超過 350 個靜态站點生成器可以供我們選擇:

詳細請見:https://jamstack.org/generators/

2023 年靜态站點生成器 SSG 大全

Next.js

官網網址:https://nextjs.org/

Github:https://github.com/vercel

Next.js 不僅是一個靜态站點生成器,而且是使用最廣泛的開源、基于 React 的架構之一,用于建構網站和 Web 應用。它支援服務端渲染 (SSR)、靜态站點生成 (SSG)、增量靜态渲染和用戶端渲染 (CSR)。

Next.js 的一大優點是它允許我們決定如何為每個頁面使用 SSR 或 SSG。這使其成為需要多種渲染方法的更複雜項目的不錯選擇。

Next.js 由 Vercel 建立,目前擁有 101k GitHub Star。Next.js 還具有結構良好且易于浏覽的文檔,可提供無縫的學習體驗。

特性:

  • 基于檔案的路由系統
  • 預設為 SSG,不同于預設為 SSR 的其他工具
  • 通過其自定義圖像元件優化圖像

圖下圖:

2023 年靜态站點生成器 SSG 大全

Hugo

官網網址:https://gohugo.io/

Github:https://github.com/gohugoio/hugo

Hugo 是一個用 Go 編寫的靜态站點生成器,針對快速建構時間進行了優化。

Hugo 提供了内容管理功能,使其成為擁有許多文章的網站或部落格的絕佳選擇。首先,它處理存儲在 /content 目錄中的 markdown 檔案中的所有内容,使得從單個檔案夾釋出和管理大量内容變得容易。其次,Hugo 内置了對分頁的支援,生成目錄,并支援将内容分組到類别和标簽中,稱為分類法。最後,Hugo 提供字數統計和閱讀分鐘數功能。Hugo 還将 markdown 用于中繼資料、布局模闆和 i18n 配置。

特性:

  • 跨平台支援 Windows、macOS、Linux 等
  • 內建的谷歌分析支援
  • 使用 markdown 來建立内容
  • 内置分頁支援
  • 支援生成目錄
  • 提供分頁功能
  • 支援國際化(i18n),開發者可以快速搭建多語言網站
  • 一個很棒的主題系統,它提供了 300 多個主題
  • 除了 HTML 輸出,Hugo 還支援 AMP 和 JSON 等其他格式

如下圖:

2023 年靜态站點生成器 SSG 大全

Gatsby

官網網址:http://gatsbyjs.org/

Github: https://github.com/gatsbyjs/gatsby

Gatsby 也是最流行和使用最廣泛的架構之一。它是一個基于 React.js 的開源架構,是建立網站和應用的絕佳選擇。除了延遲靜态生成 (DSG) 和服務端呈現 (SSR) 之外,它還提供了靜态站點生成。使用 Gatsby 的一個好處是它提供了大量的主題、入門模闆和插件。

除了其架構功能之外,Gatsby 還提供一種名為 Gatsby Cloud 的産品,這是一種用于建構和托管 Gatsby 網站的雲基礎設施。Gatsby Cloud 之于 Gatsby 就像 Vercel 之于 Next.js。

Gatsby 架構擁有一個活躍的開發者社群,并提供了豐富的文檔。

特性:

  • 支援基于 GraphQL 的資料擷取
  • 擁有龐大的插件生态系統,其中包含适用于不同用例的插件,包括樣式、圖像、分析和搜尋
  • 支援與多個 CMS 內建,包括 Prismic
  • 提供多個主題和入門模闆
  • 可以通過 Gatsby 的雲平台通路全球 CDN、雲功能等
  • 通過 gatsby-image 插件提供開箱即用的圖像處理、壓縮和優化

如下圖:

2023 年靜态站點生成器 SSG 大全

Jekyll

官網網址: https://jekyllrb.com/

Github: https://github.com/jekyll/jekyll

Jekyll是一個簡單的、支援部落格的靜态站點生成器,非常适合個人、項目或組織站點。把它想象成一個基于檔案的CMS,沒有所有的複雜性。Jekyll擷取您的内容,呈現Markdown和Liquid模闆,并吐出一個完整的靜态網站,可供Apache、Nginx或其他web伺服器使用。Jekyll是GitHubPages背後的引擎,您可以使用它直接從GitHub存儲庫托管站點。

如下圖:

2023 年靜态站點生成器 SSG 大全

Nuxt

官網網址: https://nuxtjs.org/

Github:https://github.com/nuxt/nuxt.js

Nuxt.js 是一個基于 Vue 的架構,并不是純粹的靜态站點生成器。但是,它可以用作建構 SPA 的 SSR 架構或用作 SSG。它有一個全靜态模式,可以用它來開發靜态站點。

Nuxt.js 的最新版本預設使用 Vite,使其速度更快、性能更高。Nuxt.js 在 Vue.js 開發者中非常流行。

特性:

  • 基于檔案的路由
  • 全靜态模式
  • 支援 Typescript
  • 零配置啟動
  • 自動導入元件
  • 提供超過 160 個子產品

如下圖:

Docusaurus

官網網址: https://v2.docusaurus.io/

Github:https://github.com/nuxt/nuxt.js

節省時間,專注于項目文檔。隻需使用Markdown編寫文檔和部落格文章,Docusaurus就可以釋出一組靜态html檔案。

特性:

  • 讓您節省時間、專注于文檔編寫。您隻需采用 MDX 格式編寫文檔和博文, Docusaurus 就會将它們建構成靜态的 HTML 檔案供使用者通路。 您甚至可以在 Markdown 中嵌入 React 元件,這一切都得益于 MDX。
  • 利用 React 元件可以為您的項目擴充或自定義頁面布局。 得益于 Docusaurus 的插件架構,再設計您自己的 網站的同時,仍然能夠重用由 Docusaurus 插件所建立的資料。
  • 内置支援本地化翻譯功能。可以通過 git、Crowdin 或任何 翻譯管理工具來翻譯您的文檔并能夠獨立部署。
  • 讓使用者可以檢視您的項目的所有版本的文檔。文檔版本化功能可以幫 您保持文檔與項目版本的同步。
  • 讓您的使用者能夠輕松地查找他們所需要的内容。 我們自豪地支援 Algolia 文檔搜尋産品。

如下圖:

2023 年靜态站點生成器 SSG 大全

Hexo

官網網址: https://hexo.io/

Github: https://github.com/hexojs/hexo

Hexo是一款基于Nodejs的,快速、簡潔且高效的部落格架構。具有豐富的插件和主題,具有超快的速度。支援Makedown文法,可以友善快捷的編寫部落格文檔。同時支援node指令,可以一鍵部署到GitHub Pages, Heroku 或其他平台。

總之,是個寫部落格的利器。

如下圖:

2023 年靜态站點生成器 SSG 大全

Slate

官網網址: https://slatedocs.github.io/slate/

Github: https://github.com/slatedocs/slate

Slate 可幫助您建立美觀,智能,響應式的 API 文檔。

具有以下特性:

  • 幹淨、直覺的設計
  • 支援 Markdown 文法
  • 有多種程式設計語言的代碼示例
  • 開箱即用的文法高亮功能,支援超過 100 種語言,無需配置

目前僅支援 Linux 以及 OS X,在 Windows 上可能可以運作,但官方不支援。

如下圖:

2023 年靜态站點生成器 SSG 大全
2023 年靜态站點生成器 SSG 大全

GitBook

官網網址: https://www.gitbook.com/

Github: https://github.com/GitbookIO/gitbook

GitBook 是一個基于 Node.js 的指令行工具,可使用 Github/Git 和 Markdown 來制作精美的電子書或制作開源軟體幫助文檔等。

從前我們用筆墨紙硯寫書,後來我們在電腦上敲擊 Word 文檔,再後來,我們似乎不滿足于這樣的使用工具,Gitbook 為我們提供了新的思路。它不同于備忘錄、Word 文檔這類書寫工具,而是能直接線上實作添加目錄、排版等功能。除此之外,Gitbook 還有一個最大的優點——能多人同時線上編輯。著作完成之後,你可以将圖書輸出成靜态 HTML 或 PDF 等格式分享給其他小夥伴。

如下圖:

2023 年靜态站點生成器 SSG 大全

Astro

官網網址: https://astro.build/

Github: https://github.com/withastro/astro

Astro 在技術上是一個開源架構,而不是靜态站點生成器。這意味着即使 Astro 支援靜态站點生成,它也提供 SSR 并具有其他功能。例如,它支援與 Tailwind CSS、React、Vue 和 Svelte 等技術內建,并允許我們在同一應用中混合混合它們。

Astro 的 Island 架構允許我們在靜态頁面上擁有互動式内容。Astro islands 為我們打開了将 SSG 與動态内容相結合的新方式的大門。一個示例就是将銷售活動所需的倒數計時器元件注入到部落格頁面。

Astro 将 UI 提取到頁面上的較小元件中,并用輕量級 HTML 替換未使用的 JavaScript。這使得網站加載速度更快并縮短了可互動時間 (Time to Interactive,TTI),因為發送到用戶端的 JavaScript 非常少。

盡管 Astro 是一個相對較新的解決方案,但其令人興奮的功能已經引起了開發者的廣泛關注。Astro 提供了多種內建和主題,開發者可以使用它們來豐富應用。

特性:

  • 提供多個主題
  • 提供多種內建
  • 基于檔案的路由
  • 為 Markdown 和 MDX 提供原生支援
  • 支援混合多個架構
  • Island 架構允許将互動式内容注入到靜态頁面

如下圖:

2023 年靜态站點生成器 SSG 大全

Docsify

官網網址: https://docsify.js.org/

Github: https://github.com/docsifyjs/docsify

我們在做完項目的時候經常會寫一些項目手冊,來記錄我們在項目開發過程中的一些開發流程、使用方式以及注意事項,分享給将會使用到這個項目的人,友善大家快速上手,讓程式順利運作。

目前比較好的方式就是寫成Markdown格式的技術文檔,友善我們釋出在github上,同時也可以釋出到部落格分享平台。除此之外我們還可以借助docsify這個工具,來幫助我們快速的搭建一個小型的文檔網站,它可以自動将我們寫在Markdown中的标題生成目錄,整個頁面的配色和布局也十分舒适易讀,讓整個閱讀體驗提升了好幾個level,有了docsify這個神器,再也不害怕看長長的技術文檔了。

docsify 是一個動态生成文檔網站的工具。不同于 GitBook、Hexo 的地方是它不會将 .md 轉成 .html 檔案,所有轉換工作都是在運作時進行。這将非常實用,如果隻是需要快速的搭建一個小型的文檔網站,或者不想因為生成的一堆 .html 檔案“污染” commit 記錄,隻需要建立一個 index.html 就可以開始寫文檔而且直接部署在GitHub Pages。

特性

  • 無需建構,寫完文檔直接釋出
  • 容易使用并且輕量 (~19kB gzipped)
  • 智能的全文搜尋
  • 提供多套主題
  • 豐富的 API
  • 支援 Emoji
  • 相容 IE10+
  • 支援 SSR (example)

如下圖:

2023 年靜态站點生成器 SSG 大全

VuePress

官網網址: https://vuepress.vuejs.org/

Github: https://github.com/vuejs/vuepress

VuePress 由兩部分組成:第一部分是一個極簡靜态網站生成器 (opens new window),它包含由 Vue 驅動的主題系統和插件 API,另一個部分是為書寫技術文檔而優化的預設主題,它的誕生初衷是為了支援 Vue 及其子項目的文檔需求。

每一個由 VuePress 生成的頁面都帶有預渲染好的 HTML,也是以具有非常好的加載性能和搜尋引擎優化(SEO)。同時,一旦頁面被加載,Vue 将接管這些靜态内容,并将其轉換成一個完整的單頁應用(SPA),其他的頁面則會隻在使用者浏覽到的時候才按需加載。

特性(features)

  • 内置 markdown 擴充,針對技術文檔進行了優化
  • 能夠利用内嵌在 markdown 檔案中的 Vue 代碼
  • 以 Vue 驅動的自定義主題系統
  • PWA 支援
  • Google Analytics 內建
  • 一個預設主題:響應式布局可選的首頁簡單、開箱即用、基于标題的搜尋功能可定制的導航欄和側邊欄自動生成的 GitHub 連結和頁面編輯連結

如下圖:

2023 年靜态站點生成器 SSG 大全

MkDocs

官網網址: http://www.mkdocs.org/

Github: https://github.com/mkdocs/mkdocs

MkDocs是一個快速、簡單、華麗的靜态網站生成器,适用于建構項目文檔。文檔源檔案以Markdown編寫,并使用一個YAML檔案來進行配置。 MkDocs生成完全靜态的HTML網站,你可以将其部署到GitHub pages、Amzzon S3或你自己選擇的其它任意地方。

MkDocs有一堆很好看的主題。 官方内置了兩個主題: mkdocs 和readthedocs, 也可以從MkDocs wiki中選擇第三方主題, 或者自定義主題。

支援實時預覽你的網站: 當你編輯Md檔案時,内置的開發服務可以幫助你預覽顯示效果。當文檔有改動時,甚至還可以自動載入并重新整理你的浏覽器。

如下圖:

2023 年靜态站點生成器 SSG 大全

UmiJS

官網網址: https://umijs.org/

Github: https://github.com/umijs/umi

umi,中文可發音為烏米,是一個可插拔的企業級 react 應用架構。umi 以路由為基礎的,支援類 next.js 的約定式路由,以及各種進階的路由功能,并以此進行功能擴充,比如支援路由級的按需加載。然後配以完善的插件體系,覆寫從源碼到建構産物的每個生命周期,支援各種功能擴充和業務需求,目前内外部加起來已有 50+ 的插件。

umi 是螞蟻金服的底層前端架構,已直接或間接地服務了 600+ 應用,包括 java、node、H5 無線、離線(Hybrid)應用、純前端 assets 應用、CMS 應用等。他已經很好地服務了我們的内部使用者,同時希望他也能服務好外部使用者。

#特性

  • 開箱即用,内置 react、react-router 等
  • 類 next.js 且功能完備的路由約定,同時支援配置的路由方式
  • 完善的插件體系,覆寫從源碼到建構産物的每個生命周期
  • 高性能,通過插件支援 PWA、以路由為單元的 code splitting 等
  • 支援靜态頁面導出,适配各種環境,比如中台業務、無線業務、egg、支付寶錢包、雲鳳蝶等
  • 開發啟動快,支援一鍵開啟 dll 等
  • 一鍵相容到 IE9,基于 umi-plugin-polyfills
  • 完善的 TypeScript 支援,包括 d.ts 定義和 umi test
  • 與 dva 資料流的深入融合,支援 duck directory、model 的自動加載、code splitting 等等

如下圖:

2023 年靜态站點生成器 SSG 大全
2023 年靜态站點生成器 SSG 大全

Eleventy

官網網址: https://11ty.dev/

Github: https://github.com/11ty/eleventy

Eleventy,簡稱 11ty,是一個用 JavaScript 編寫的開源靜态站點生成器。但是,它不依賴于特定的架構來生成或提供内容。對于熟悉并習慣使用 JavaScript 和 Node.js 的開發者來說,這是一個很好的選擇。

多年來,Eleventy 越來越受歡迎,尤其是當 web.dev、ESlint、MDN 和 Netlify 等網站都是用它建構的時候。

Eleventy 預設是零配置的,具有靈活的配置選項,并且适用于任何項目的結構。它支援多種模闆語言,包括 Liquid、Handlebars、Markdown 和 JavaScript。

特性:

  • 靈活的模闆系統
  • 支援 11 種模闆語言
  • 無需用戶端 JavaScript
  • 快速建構時間
  • JavaScript 友好
  • 配置靈活

如下圖:

2023 年靜态站點生成器 SSG 大全

最後

一台電腦,一個鍵盤,盡情揮灑智慧的人生;

幾行數字,幾個字母,認真編寫生活的美好;

一 個靈感,一段程式,推動科技進步,促進社會發展。

創作不易,喜歡的老鐵們加個關注,點個贊,打個賞,後面會不定期更新幹貨和技術相關的資訊,速速收藏,謝謝!你們的一個小小舉動就是對小編的認可,更是創作的動力。