靜態內容生成器——Wyam

(此文章同時發表在本人微信公衆號「dotNET每日精華文章」,歡迎右邊二維碼來關注。)git

題記:今天繼續靜態網站的話題,介紹我選用的一個使用.NET開發的靜態內容生成器——Wyam。github

技術選型

在決定開始搞靜態網站以後,面臨的第一個問題就是如何生成靜態內容。有現成工具嗎?這樣的工具符合近期和遠期要求嗎?若是不符合,有什麼技術思路本身開發嗎?windows

帶着這樣的問題,我迅速Bing到了https://www.staticgen.com/這個網站,這個網站匯聚了市面上存在的幾乎全部開源靜態網站生成器。微信

不出所料,排名第一的是Jekyll,其GitHub上的Star高達22822。Jekyll雖然最流行,不過其主要用於Blog站點生成,我目前主要面向企業CMS,更爲重要的是它是Ruby編寫的,這個不是我最熟悉的開發平臺。架構

不過StaticGen貼心的給出了語言過濾選項,在.NET語言下,僅出現了pretzelWyamgrazeMisakai Baker四個工具。雖然pretzel使用了和Jekyll同樣的Liquid模板引擎,適應性可能更廣,可是在對這4個工具初步研究後,基本選定了Wyam。他基本能夠知足我對靜態內容生成器的技術要求:工具

  • 基於熟悉的語言和平臺開發,架構設計考慮了擴展性。這樣方便我能夠根據須要自行擴展。
  • 使用熟悉和相對使用普遍的模板語言和引擎。方便我製做網站模板(內容輸入),並對其餘人進行培訓。
  • 可以方便的注入元數據。由於CMS可能須要注入更多更復雜的數據。
  • 能夠嵌入運行。不少生成器都是命令行工具,可是我可能須要讓生成器在後臺運行。

Wyam的介紹

Waym.io官網上的自我介紹基本上把Wyam是什麼說的很清楚了,我就簡單在這裏翻譯一下。網站

Wyam是不同凡響的。它不是Jekyll的克隆(並不表明Jekyll有任何問題),它不是設計來生成博客的(雖然也能很好的勝任此任務)。Waym是一個靜態內容生成器,能夠用於生成網站、文檔、電子書和其餘更多的內容。因爲它的全部東西都是經過不少靈活的模塊(你也能夠編寫本身的模塊)串在一塊兒,因此惟一的限制是你的想象力。ui

在它的特性當中,尤爲讓我看中的是:.net

  • 配置文件使用C#腳本寫就,這徹底是得益於Roslyn的強大
  • 簡單直接的元數據使用方式
  • 支持多種模板引擎和語言,尤爲直接內置Razor的支持(且Razor的支持是基於ASP.NET MVC 6的源代碼的,將來會支持TagHelper) 。固然也有Markdown支持或者擴展本身的模板語言支持。
  • 集成Web Server方便在編寫模板的時候進行預覽
  • 徹底支持Nuget,能夠在執行生成的過程當中,自動下載依賴的Nuget包
  • 更爲重要的,它支持嵌入運行
  • 相對完整清晰的文檔

Waym其實借鑑了現有其餘靜態內容生成器的優勢和設計,好比FrontMatter的支持(經過Yaml實現)。雖然它目前還只是0.11,可是功能完成度仍是比較高了,而且你也能夠直接pull request參與貢獻。源代碼地址是:https://github.com/Wyamio/Wyam命令行

Wyam的使用

Wyam的用法很簡單,直接經過命令行執行,以下所示:

c:\MySite>Wyam.exe --preview --watch
	Loading configuration from c:\MySite\config.wyam.
	Cleaning output directory c:\MySite\.\Output...
	Cleaned output directory.
	Executing 3 pipelines...
	    Executing pipeline "Markdown" (1/3) with 5 child module(s)...
	    Executed pipeline "Markdown" (1/3) resulting in 0 output document(s).
	    Executing pipeline "Razor" (2/3) with 4 child module(s)...
	    Executed pipeline "Razor" (2/3) resulting in 2 output document(s).
	    Executing pipeline "Resources" (3/3) with 1 child module(s)...
	    Executed pipeline "Resources" (3/3) resulting in 21 output document(s).
	Executed 3 pipelines.
	Preview server running on port 5080...
	Watching folder c:\MySite\.\Input...
	Hit any key to exit...	
	

Wyam的源代碼中有個Examples的文件夾,裏面有一些例子能夠參考。其實,Wyam.io這個網站自己就是用Wyam來生成的,且也有源代碼,因此也是一個很好的參考。固然我也作了一個簡單的示例,能夠經過這裏下載:https://zyg.blob.core.windows.net/test/SampleTemplate.zip

相關文章
相關標籤/搜索