(转).Net模板引擎
https://blog.51cto.com/u_14672305/3436968
系列目录 【已更新最新开发文章,点击查看详细】
开源项目是众多组织与个人分享的组件或项目,作者付出的心血我们是无法体会的,所以首先大家要心存感激、尊重。请严格遵守每个项目的开源协议后再使用。尊重知识产权,共建和谐开源社区。
模板引擎可以生成特定格式的文档,用于软件开发中生成具有相对规则的代码文件,比如:数据访问层、业务逻辑层、UI层等,使用模板可以大大提高开发效率。
模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换一下便生成了最终需要的业务数据(比如网页)。置换型模板引擎实现简单,但其效率低下,无法满足高负载的应用需求(比如有海量访问的网站),因此还出现了“解释型”模板引擎和“编译型”模板引擎等。
1、Fluid 【最值得推荐】
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
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)
精确控制空白文本输出
全功能语言,包括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语句使用
几个 内置函数: 多行语句,而不必包含每一行{{...}}
arrays functions
date
html
maths functions
object
regex functions
string functions
timespan
安全解析器和 安全运行时,允许您控制公开的对象和函数
语法着色
可以安装 适用于 Visual Studio Code的 Scriban 扩展以获取 scriban 脚本(不含 HTML)和 scriban html 文件的语法着色。
文档
有关语言语法的说明,请参阅 语言文档。
有关 内置函数的列表,请参阅 内置函数文档。
有关用于编译和运行模板的 .NET 运行时 API 的说明,请参阅 运行时文档。
有关 Liquid模板支持的更多详细信息,请参阅 Liquid 支持文档。
有关一些幕后细节,请参阅我的博客文章“ 为 .NET 实现文本模板引擎”。
二进制文件
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/
GitHub: https://github.com/scriban/scriban
3、NVelocity
NVelocity是一个非常不错的模板引擎,可以用来生成文件、页面等相关处理,非常高效和方便。它原先是在网站 http://nvelocity.sourceforge.net/ 上维护,不过从0.41后,该网站就不再进行NVelocity更新了,现在可以在网站http://nvelocity.codeplex.com/上获得最新版本的更新。
官网: http://nvelocity.sourceforge.net
4、VTemplate
VTemplate模板引擎也简称为VT,是基于.NET的模板引擎,它允许任何人使用简单的类似HTML语法的模板语言来引用.NET里定义的对象。当VTemplate应用于web开发时,界面设计人员可以和程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由程序开发人员关注业务逻辑编码。VTemplate将.NET程序代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在ASP.NET WebForm开发之外又提供了一种可选的方案。 VTemplate也可以作为动态文本生成工具,生成HTML、XML、邮件、程序源代码或其它文本等。
VTemplate 开源地址
URL: http://net-vtemplate.googlecode.com
SVN: http://net-vtemplate.googlecode.com/svn/src/VTemplate.Engine
参考示例 VTemplate.WebTester 项目: http://net-vtemplate.googlecode.com/svn/src/VTemplate.WebTester
5、Mustachio
Mustachio 是一款轻量级且强大的模板引擎,可以用在网页渲染、代码生成器等需要模板引擎的场景。我用它是用在配置文件模板化的场景,在配置文件里面编写一些模板语法,然后从 Cloud 拉取键值配置数据,来渲染配置文件,最后加载到程序中。和 Razor 比起来,它非常的简单和轻,如果有这方面的需求可以考虑选择它。
GitHub: https://github.com/wildbit/mustachio
6、RazorEngine
Razor Engine,之前仅仅是ASP.NET MVC的一种View引擎,目前已经完全成为一种可以独立使用的模版引擎,并且已经成为了CodePlex上一个开源的项目( http://razorengine.codeplex.com/)。对于使用过ASP.NET MVC Razor视图引擎的朋友们一定已经领略过它的灵活性和易用性。T4模板采用的就是该引擎。
GitHub: https://github.com/Antaris/RazorEngine
成在管理,败在经验;嬴在选择,输在不学! 贵在坚持!
欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。
个人作品
1、BIMFace.Community.SDK.NET
开源地址: https://gitee.com/NAlps/BIMFace.SD
2、ZCN.NET.Common
开源地址: https://gitee.com/NAlps/zcn.net.common
技术栈
1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python
2、jQuery、Vue.js、Bootstrap
3、数据库:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、达梦DM、人大金仓、 神通、南大通用 GBase、华为 GaussDB 、腾讯 TDSQL 、阿里 PolarDB、蚂蚁金服 OceanBase、东软 OpenBASE、浪潮云溪数据库 ZNBase
4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分库分表、读写分离
5、架构:领域驱动设计 DDD、ABP
6、环境:跨平台、Windows、Linux(CentOS、麒麟、统信UOS、深度Linux)、maxOS、IIS、Nginx、Apach
7、移动App:Android、IOS、HarmonyOS、微信、小程序、快应用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler
云原生、微服务、Docker、CI/CD、DevOps、K8S;
Dapr、RabbitMQ、Kafka、分布式、大数据、高并发、负载均衡、中间件、RPC、ELK;
.NET + Docker + jenkins + Github + Harbor + K8S;
出处:www.cnblogs.com/SavionZhang
作者:张传宁 微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。
专注于微软.NET技术(.NET Core、Web、MVC、WinForm、WPF)、通用权限管理系统、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。
多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。
熟悉中小企业软件开发过程:需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业快速化实现互联网技术全流程解决方案。
-----------------------------------
.NET Core/.NET5/.NET6 开源项目汇总13:模板引擎
https://blog.51cto.com/u_14672305/3436968