(此文章同時發表在本人微信公衆號「dotNET每日精華文章」,歡迎右邊二維碼來關注。)git
題記:今天繼續靜態網站的話題,介紹我選用的一個使用.NET開發的靜態內容生成器——Wyam。github
在決定開始搞靜態網站以後,面臨的第一個問題就是如何生成靜態內容。有現成工具嗎?這樣的工具符合近期和遠期要求嗎?若是不符合,有什麼技術思路本身開發嗎?windows
帶着這樣的問題,我迅速Bing到了https://www.staticgen.com/這個網站,這個網站匯聚了市面上存在的幾乎全部開源靜態網站生成器。微信
不出所料,排名第一的是Jekyll,其GitHub上的Star高達22822。Jekyll雖然最流行,不過其主要用於Blog站點生成,我目前主要面向企業CMS,更爲重要的是它是Ruby編寫的,這個不是我最熟悉的開發平臺。架構
不過StaticGen貼心的給出了語言過濾選項,在.NET語言下,僅出現了pretzel,Wyam,graze,Misakai Baker四個工具。雖然pretzel使用了和Jekyll同樣的Liquid模板引擎,適應性可能更廣,可是在對這4個工具初步研究後,基本選定了Wyam。他基本能夠知足我對靜態內容生成器的技術要求:工具
Waym.io官網上的自我介紹基本上把Wyam是什麼說的很清楚了,我就簡單在這裏翻譯一下。網站
Wyam是不同凡響的。它不是Jekyll的克隆(並不表明Jekyll有任何問題),它不是設計來生成博客的(雖然也能很好的勝任此任務)。Waym是一個靜態內容生成器,能夠用於生成網站、文檔、電子書和其餘更多的內容。因爲它的全部東西都是經過不少靈活的模塊(你也能夠編寫本身的模塊)串在一塊兒,因此惟一的限制是你的想象力。ui
在它的特性當中,尤爲讓我看中的是:.net
Waym其實借鑑了現有其餘靜態內容生成器的優勢和設計,好比FrontMatter的支持(經過Yaml實現)。雖然它目前還只是0.11,可是功能完成度仍是比較高了,而且你也能夠直接pull request參與貢獻。源代碼地址是:https://github.com/Wyamio/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。