(此文章同时发表在本人微信公众号“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。