zoukankan      html  css  js  c++  java
  • 静态内容生成器——Wyam

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

    题记:今天继续静态网站的话题,介绍我选用的一个使用.NET开发的静态内容生成器——Wyam。

    技术选型

    在决定开始搞静态网站之后,面临的第一个问题就是如何生成静态内容。有现成工具吗?这样的工具符合近期和远期要求吗?如果不符合,有什么技术思路自己开发吗?

    带着这样的问题,我迅速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是一个静态内容生成器,可以用于生成网站、文档、电子书和其他更多的内容。由于它的所有东西都是通过很多灵活的模块(你也可以编写自己的模块)串在一起,所以唯一的限制是你的想象力。

    在它的特性当中,尤其让我看中的是:

    • 配置文件使用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:MySiteconfig.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

  • 相关阅读:
    视频高清直播RTMP视频推流组件EasyRTMP-IOS版如何使用wchar_t*类型参数?
    设计模式
    算法学习【第10篇】:算法之动态规划问题
    算法学习【第9篇】:算法之斐波那契数列
    算法学习【第8篇】:贪心算法找零问题
    算法学习【第7篇】:算法之迷宫问题
    算法学习【第6篇】:算法之数据结构
    算法学习【第5篇】:常用排序算法(*******)
    算法学习【第4篇】:算法之---堆的简单介绍
    算法学习【第3篇】:树和二叉树简介
  • 原文地址:https://www.cnblogs.com/redmoon/p/5080906.html
Copyright © 2011-2022 走看看