.NET Core/.NET5/.NET6 开源项目汇总13:模板引擎

开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。

  模板引擎可以生成特定格式的文档,用于软件开发中生成具有相对规则的代码文件,比如:数据访问层、业务逻辑层、UI层等,使用模板可以大大提高开发效率。  

  模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换一下便生成了最终需要的业务数据(比如网页)。置换型模板引擎实现简单,但其效率低下,无法满足高负载的应用需求(比如有海量访问的网站),因此还出现了“解释型”模板引擎和“编译型”模板引擎等。

1、Fluid 【最值得推荐】

Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题的主要构成部分,并且被用于加载店铺系统的动态内容。它是一种安全的模板语言,对于非程序员的受众来说也非常容易理解。从 2006 年起,Liquid 就被 Shopify 所使用,现在更是被大量 web 应用所使用。

Fluid 是一个基于 Liquid 模板语言的开源 .NET 模板引擎。官网文档非常详细、简单易容、是最值得推荐的模板引擎。

2、Scriban【推荐】

Scriban是一种用于.NET的快速、强大、安全和轻量级脚本语言和引擎,它主要是为文本模板开发的,具有用于解析Liquid模板的兼容模式。

  • 特征

    • 非常高效、快速的解析器和轻量级的运行时。CPU 和垃圾收集器友好。检查基准以获取更多详细信息。
    • 由提供完整抽象语法树的 Lexer/Parser 提供支持,快速、通用且健壮,比基于正则表达式的解析器更高效。
      • 用于错误报告的精确源代码位置(路径、列和行)
      • 将 AST 写入脚本文本表示,使用Template.ToText,允许在内存中操作脚本并将它们重新保存到磁盘,对于往返脚本更新场景很有用
    • liquid使用Template.ParseLiquid方法 兼容提供许多扩展点的可扩展运行时
      • 虽然该liquid语言不如 scriban 强大,但此模式允许轻松迁移liquid到不同scriban语言
      • 使用AST 到文本模式,您可以liquid使用Template.ToText解析为的模板将脚本转换为抄写员脚本Template.ParseLiquid
      • 由于 Liquid 语言没有严格定义,并且实际上有各种版本的 Liquid 语法,因此在使用带有 scriban 的液体模板时存在一些限制,请参阅文档中的Loquid支持获取更多详细信息。
    • 支持async/await评估脚本(例如Template.RenderAsync
    • 精确控制空白文本输出
    • 全功能语言,包括ifelseforwhile表达式x = 1 + 2)、条件...等。
    • 函数调用和管道myvar | string.capitalize)复杂对象(javascript/json 之类的对象x = {mymember: 1})和数组(例如x = [1,2,3,4]
    • 允许将语句块传递给函数,通常由wrap语句使用
    • 几个内置函数多行语句,而不必包含每一行{{...}}
    • 安全解析器安全运行时,允许您控制公开的对象和函数
  • 语法着色

          可以安装适用于 Visual Studio CodeScriban 扩展以获取 scriban 脚本(不含 HTML)和 scriban html 文件的语法着色。

  • 文档

  • 二进制文件

    • Scriban 可用作 NuGet 包: NuGet
    • 与以下 .NET Standard 2.0+ 兼容(3.0 中的新增功能)
    • 为了支持较旧的框架(.NET 3.5、4.0、4.5、.NET Standard 1.1、1.3,它们仅在不再受支持的较旧的 Scriban 2.x 中提供。
    • 另外,Scriban.Signed NuGet包提供了签名的程序集。
  • 源嵌入

          从 Scriban 3.2.1+ 开始,该软件包附带了源代码,以便您可以将 Scriban 的使用内化到您的项目中。这在您无法轻松使用 NuGet 引用(例如 Roslyn 源生成器)的环境中非常有用。

  • 相关项目

    • dotliquid : 液体模板引擎的 .NET 端口
    • Fluid .NET 液体模板引擎
    • Nustache:.NET 的无逻辑模板
    • Handlebars.Net : handlebars.js 的 .NET 端口
    • Textrude:使用 Scriban 模板将 CSV/JSON/YAML 模型转换为代码的 UI 和 CLI 工具
3、NVelocity

NVelocity是一个非常不错的模板引擎,可以用来生成文件、页面等相关处理,非常高效和方便。它原先是在网站http://nvelocity.sourceforge.net/ 上维护,不过从0.41后,该网站就不再进行NVelocity更新了,现在可以在网站http://nvelocity.codeplex.com/上获得最新版本的更新。

4、VTemplate

VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象。当VTemplate应用于web开发时,界面设计人员可以和程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由程序开发人员关注业务逻辑编码。VTemplate将.NET程序代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在ASP.NET WebForm开发之外又提供了一种可选的方案。 VTemplate也可以作为动态文本生成工具,生成HTML、XML、邮件、程序源代码或其它文本等。

5、Mustachio

Mustachio 是一款轻量级且强大的模板引擎,可以用在网页渲染、代码生成器等需要模板引擎的场景。我用它是用在配置文件模板化的场景,在配置文件里面编写一些模板语法,然后从 Cloud 拉取键值配置数据,来渲染配置文件,最后加载到程序中。和 Razor 比起来,它非常的简单和轻,如果有这方面的需求可以考虑选择它。

6、RazorEngine

Razor Engine,之前仅仅是ASP.NET MVC的一种View引擎,目前已经完全成为一种可以独立使用的模版引擎,并且已经成为了CodePlex上一个开源的项目(http://razorengine.codeplex.com/)。对于使用过ASP.NET MVC Razor视图引擎的朋友们一定已经领略过它的灵活性和易用性。T4模板采用的就是该引擎。

posted @ 2021-08-13 09:06  张传宁  阅读(3053)  评论(5编辑  收藏  举报
页脚 HTML 代码