.NET Core/.NET5/.NET6 开源项目汇总13:模板引擎
开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。
模板引擎可以生成特定格式的文档,用于软件开发中生成具有相对规则的代码文件,比如:数据访问层、业务逻辑层、UI层等,使用模板可以大大提高开发效率。
模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换一下便生成了最终需要的业务数据(比如网页)。置换型模板引擎实现简单,但其效率低下,无法满足高负载的应用需求(比如有海量访问的网站),因此还出现了“解释型”模板引擎和“编译型”模板引擎等。
Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题的主要构成部分,并且被用于加载店铺系统的动态内容。它是一种安全的模板语言,对于非程序员的受众来说也非常容易理解。从 2006 年起,Liquid 就被 Shopify 所使用,现在更是被大量 web 应用所使用。
Fluid 是一个基于 Liquid 模板语言的开源 .NET 模板引擎。官网文档非常详细、简单易容、是最值得推荐的模板引擎。
- NuGet:https://www.nuget.org/packages/Fluid.Core
- GitHub:https://github.com/sebastienros/fluid
- 英文文档:https://shopify.github.io/liquid
- 中文文档:https://www.coderbusy.com/liquid
Scriban是一种用于.NET的快速、强大、安全和轻量级脚本语言和引擎,它主要是为文本模板开发的,具有用于解析Liquid模板的兼容模式。
-
特征
- 非常高效、快速的解析器和轻量级的运行时。CPU 和垃圾收集器友好。检查基准以获取更多详细信息。
- 由提供完整抽象语法树的 Lexer/Parser 提供支持,快速、通用且健壮,比基于正则表达式的解析器更高效。
- 用于错误报告的精确源代码位置(路径、列和行)
- 将 AST 写入脚本文本表示,使用
Template.ToText
,允许在内存中操作脚本并将它们重新保存到磁盘,对于往返脚本更新场景很有用
liquid
使用Template.ParseLiquid
方法 兼容提供许多扩展点的可扩展运行时- 支持
async
/await
评估脚本(例如Template.RenderAsync
) - 精确控制空白文本输出
- 全功能语言,包括
if
/else
/for
/while
、表达式(x = 1 + 2
)、条件...等。 - 函数调用和管道(
myvar | string.capitalize
)复杂对象(javascript/json 之类的对象x = {mymember: 1}
)和数组(例如x = [1,2,3,4]
)- 自定义函数通过
func
语句直接进入语言,并允许函数指针/委托通过alias @ directive
- 将来自运行时 API 的.NET 自定义函数与许多用于与 .NET 对象交互的选项进行绑定。
- 自定义函数通过
- 允许将语句块传递给函数,通常由
wrap
语句使用 - 几个内置函数:多行语句,而不必包含每一行
{{...}}
- 安全解析器和安全运行时,允许您控制公开的对象和函数
-
语法着色
可以安装适用于 Visual Studio Code的Scriban 扩展以获取 scriban 脚本(不含 HTML)和 scriban html 文件的语法着色。
-
文档
-
二进制文件
- Scriban 可用作 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 工具
-
在线演示
-
ASP.NET Core 示例: https://scribanonline.azurewebsites.net/
-
NVelocity是一个非常不错的模板引擎,可以用来生成文件、页面等相关处理,非常高效和方便。它原先是在网站http://nvelocity.sourceforge.net/ 上维护,不过从0.41后,该网站就不再进行NVelocity更新了,现在可以在网站http://nvelocity.codeplex.com/上获得最新版本的更新。
VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象。当VTemplate应用于web开发时,界面设计人员可以和程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由程序开发人员关注业务逻辑编码。VTemplate将.NET程序代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在ASP.NET WebForm开发之外又提供了一种可选的方案。 VTemplate也可以作为动态文本生成工具,生成HTML、XML、邮件、程序源代码或其它文本等。
- VTemplate 开源地址
- 参考示例 VTemplate.WebTester 项目:http://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester
- 参考博客:https://blog.csdn.net/my98800/article/details/50942293
Mustachio 是一款轻量级且强大的模板引擎,可以用在网页渲染、代码生成器等需要模板引擎的场景。我用它是用在配置文件模板化的场景,在配置文件里面编写一些模板语法,然后从 Cloud 拉取键值配置数据,来渲染配置文件,最后加载到程序中。和 Razor 比起来,它非常的简单和轻,如果有这方面的需求可以考虑选择它。
Razor Engine,之前仅仅是ASP.NET MVC的一种View引擎,目前已经完全成为一种可以独立使用的模版引擎,并且已经成为了CodePlex上一个开源的项目(http://razorengine.codeplex.com/)。对于使用过ASP.NET MVC Razor视图引擎的朋友们一定已经领略过它的灵活性和易用性。T4模板采用的就是该引擎。
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
个人作品
BIMFace.SDK.NET
开源地址:https://gitee.com/NAlps/BIMFace.SDK
系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html
系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html
技术栈
1、Visual Studio、.NET Core/.NET、MVC、Web API、RESTful API、gRPC、SignalR、Java、Python
2、jQuery、Vue.js、Bootstrap、ElementUI
3、数据库:分库分表、读写分离、SQLServer、MySQL、PostgreSQL、Redis、MongoDB、ElasticSearch、达梦DM
4、架构:DDD、ABP、SpringBoot、jFinal
5、环境:跨平台、Windows、Linux、Nginx
6、移动App:Android、IOS、HarmonyOS、微信小程序、钉钉、uni-app、MAUI
分布式、高并发、云原生、微服务、Docker、CI/CD、DevOps、K8S;Dapr、RabbitMQ、Kafka、RPC、Elasticsearch。
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
出处:www.cnblogs.com/SavionZhang
作者:张传宁 技术顾问、培训讲师、微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于企业级通用开发平台、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:可行调研、需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业实现互联网转型升级全流程解决方案。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。
如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!