ASP.NET Core Library – scriban (Template Engine)
前言
有些项目会需要让 end user 写模板 (rich text) 同时又需要做一些 data binding. 这几乎是 programmer 的工作了...
在 C#, 大可以使用 Razor Engine 来处理. 但是它对 end user 来说太 advance 了. 而且一般上 end user 只是想做简单的 data binding 和一些 simple 的 logic 而已.
于是就出现了许多比较简单的 template engine.
Template Engine Syntax
耳熟能详的有 EJS, handlebars, mustache, Liquid, 我觉得 React JSX 应该也可以算是一种吧.
EJS 的特点是 <% %> 符号, 它支持所以 js 语法.
handlebars 长这样
mustache, 它的特点是没有 if, for in 这些语法, 它用一些巧妙的招数来实现, 比如下面这个 if 逻辑, person 是一个 boolean
Liquid 是大名鼎鼎的电商系统 shopify 推出的.
npm tread 对比
比这个没有意思, 只是作为参考而已.
比语法的话, 我会倾向于 mustache 和 Liquid. 看上去舒服, end user 学起来也相对简单.
.NET Environment
市场怎样和 .NET 怎样是差很远的. 毕竟 .NET 是一个很冷门的东西. 外面世界总是美丽的.
.NET 有几款 template engine, 最多 star (1.7k) 的是 scriban. 其它的参考: Benchmarks
它虽然是自己的语法, 但是和 Liquid 非常相识, 而且也部分支持 Liquid 语法.
Get Started
安装
dotnet add package Scriban --version 5.0.0
对象 data binding
var template = Template.ParseLiquid("Hello {{ product.name }}!"); var result = template.Render(new { Product = new { Name = "Product 1" } }); Console.WriteLine(result);
if logic
var template = Template.Parse(@" {{ if product.name == 'Product 1' }} This is a variable with 1 {{ end }} "); var result = template.Render(new { Product = new { Name = "Product 1" } }); Console.WriteLine(result.Trim());
其它的... TODO 等用到才补.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
2018-01-03 Angular 学习笔记 ( PWA + App Shell )