Scriban:高效、强大的.NET开源模板引擎,可用于邮件、文档生成!

ops/2024/11/15 0:34:25/

现在前后端分离已经非常流行,我们已经很少关注模板生成引擎了。但在一些场景,比如邮件、文档生成,还是需要模板生成引擎的。

下面推荐一个轻量级且高效的文本模板生成引擎。

01 项目简介

Scriban是一个基于.NET的开源模板语言引擎,旨在简化文本生成任务。

Scriban主要功能与特性:

1、简洁的语法

该模板引擎使用简单、语法简洁。

例如,使用{{ variable }}输出变量,{% if condition %}…{% endif %}进行条件判断,{% for item in collection %}…{% endfor %}用于循环操作。

2、高性能

采用了编译到IL(中间语言)的方式,而非简单的字符串替换,这在处理大量数据时能够显著提升性能。

3、类型安全

Scriban能够利用静态类型检查,避免运行时错误,提高代码质量。

4、丰富的内置函数和过滤器

除了基本的变量和控制结构外,还提供了许多内置函数和过滤器,如字符串操作、日期格式化等,以增强模板的功能。

5、自定义标签和对象

允许开发者扩展其功能,创建自己的标签和对象,以满足特定需求。

6、兼容性与扩展性

Scriban具有用于解析Liquid模板的兼容模式,使得从Liquid迁移到Scriban变得容易。

7、跨平台

可以在Windows、Linux、MacOS等平台上运行。

02 使用方法

1、简单使用

// 解析scriban 模板
var template = Template.Parse("Hello {{name}}!");//结果:Hello World!
var result = template.Render(new { Name = "World" });

2、liquid模板

// 解析 liquid 模板
var template = Template.ParseLiquid("Hello {{name}}!");//结果:Hello World!
var result = template.Render(new { Name = "World" });

3、循环生成文本

//循环模板
var template = Template.Parse(@"
<ul id='products'>{{ for product in products }}<li><h2>{{ product.name }}</h2>Price: {{ product.price }}{{ product.description | string.truncate 15 }}</li>{{ end }}
</ul>
");
var result = template.Render(new { Products = this.ProductList });

03 项目地址

https://github.com/scriban/scriban

- End -

推荐阅读

Asp.net动态Web API的教程!

Kiota:基于OpenAPI的HTTP客户端代码生成器

盘点下5个Winform UI开源控件库

Open-Xml-PowerTools:支持DOCX、PPTX、XLSX等文件的合并、拆分和互相转换的.Net开源工具

一个C#开源工具库,集成了超过1000个扩展方法


http://www.ppmy.cn/ops/105253.html

相关文章

使用uniapp制作录音功能(VUE3)

制作录音功能需要用到uniapp中API uni.getRecorderManager() 获取全局唯一的录音管理器recorderManager&#xff0c;然后就能够开始进行录音&#xff0c;播放。具体方法可以去uniapp官网上查看。 代码实现&#xff1a; 1、在html中添加按钮、点击弹出弹窗&#xff1a; <v…

Go 服务调试精解

生产环境总是会遇到一些奇怪的问题,比如 Go 服务时不时地响应非常慢甚至完全没有响应,Go 服务的内存占用总是居高不下等。遇到这些问题该如何排查与分析呢?Go 语言其实为我们提供了一些非常有用的工具,如 ppprof、Trace,这两种工具可以帮助我们分析和解决 Go 服务的性能问题…

Kafka简单搭建及常用命令

一、Kafka的服务搭建 1. 安装包下载 这里我下载的是目前最新的版本&#xff0c;在3.X版本及之后的版本中&#xff0c;Kafka已经移除了Zookeeper的强依赖&#xff0c;虽然依旧支持以Zookeeper的方式启动&#xff0c;但本文仅介绍无Zookeeper的启动方式&#xff0c;即kraft模式。…

住宅IP与机房IP:哪种更适合业务应用?

在当前的互联网业务环境中&#xff0c;选择适当的IP地址类型对于确保业务的高效、稳定运行至关重要。住宅IP和机房IP作为两种常见的IP类型&#xff0c;各自具有独特的特点和适用场景。本文将从多个维度对比住宅IP与机房IP&#xff0c;以探讨哪种类型更适合业务应用。 一、定义…

LuaJit分析(六)luajit -bl 命令分析

Luajit -bl命令用于将luajit字节码文件或者lua脚本文件反汇编&#xff0c;输出汇编指令&#xff0c;很好奇怎么将字节码文件和lua脚本文件放在一块处理的&#xff0c;下面一步步分析&#xff1a; luajit虚拟机由luajit.c文件生成&#xff0c;首先定位到main函数&#xff0c;代…

解放你的带宽和内存:GZIP在解决Redis大Key方面的应用

首发公众号&#xff1a;赵侠客 引用 目前主流HTTP协议接口都是使用JSON格式做数据交换的&#xff0c;JSON数据格式有着结构简单、可读性高、跨平台&#xff0c;易解析等优点&#xff0c;同时也存在着冗余数据会占用非常多的储存空间的问题&#xff0c;这大大增加了JSON格式数据…

C++ | Leetcode C++题解之第389题找不同

题目&#xff1a; 题解&#xff1a; class Solution { public:char findTheDifference(string s, string t) {int ret 0;for (char ch: s) {ret ^ ch;}for (char ch: t) {ret ^ ch;}return ret;} };

生活方式对人健康影响非常大 第三篇

身体健康因素中 生活方式占到60% 赶紧去调整自己哪错了 上游的生活方式管理 是药三分毒 药物会影响身体肝肾功能,代谢 所以你要去找上游到底是我哪错了 短板越多 个健康状态越差 饮食管理是生活方式管理中难度最大的 原则1:与基因相对应相平衡 只吃素 会导致大脑萎…