Scriban 模板语法参考
轻量级、快速且安全的模板引擎,用于 .NET 应用
什么是 Scriban?
Scriban 是一个快速、强大、安全且轻量级的脚本语言和引擎,适用于 .NET,主要用于文本模板。它支持类似 Liquid 的语法,但更加强大和灵活。
高性能
经过优化的解析和渲染引擎,确保快速的模板处理
安全性
内置安全机制,防止恶意代码执行
易于使用
简洁直观的语法,快速上手
可扩展
支持自定义函数和对象
💾 变量和表达式
输出变量
使用双花括号输出变量值
{{ name }}
{{ user.email }}
{{ items[0] }}
算术运算
支持基本的数学运算
{{ 10 + 5 }}
{{ price * quantity }}
{{ (a + b) / 2 }}
字符串连接
使用 + 连接字符串
{{ "Hello " + name }}
{{ firstName + " " + lastName }}
🔀 条件语句
if-else 语句
根据条件显示不同内容
{{~ if user.isActive ~}}
用户已激活
{{~ else ~}}
用户未激活
{{~ end ~}}
{{~ if score >= 90 ~}}
优秀
{{~ else if score >= 60 ~}}
及格
{{~ else ~}}
不及格
{{~ end ~}}
比较运算符
支持各种比较操作
{{ age > 18 }}
{{ name == "Admin" }}
{{ items.size != 0 }}
逻辑运算符
组合多个条件
{{~ if age > 18 && hasLicense ~}}
{{~ if isAdmin || isModerator ~}}
{{~ if !isBlocked ~}}
🔄 循环语句
for 循环
遍历数组或集合
{{~ for item in items ~}}
{{ item.name }}
{{~ end ~}}
{{~ for product in products ~}}
{{ for.index }}: {{ product.title }}
{{~ end ~}}
{{~ for user in users ~}}
{{~ if for.first ~}}第一个{{~ end ~}}
{{~ if for.last ~}}最后一个{{~ end ~}}
{{~ end ~}}
循环变量
在循环中可用的特殊变量
{{ for.index }}
{{ for.first }}
{{ for.last }}
{{ for.even }}
{{ for.odd }}
⚙️ 内置函数
字符串函数
字符串处理相关函数
{{ string.upcase "hello" }}
{{ string.downcase "WORLD" }}
{{ string.capitalize "hello" }}
{{ string.truncate text 50 }}
{{ string.replace text "old" "new" }}
数组函数
数组操作相关函数
{{ array.size items }}
{{ array.first items }}
{{ array.last items }}
{{ array.join items ", " }}
{{ array.sort items }}
数学函数
数学运算相关函数
{{ math.round 3.7 }}
{{ math.ceil 3.2 }}
{{ math.floor 3.8 }}
{{ math.abs -5 }}
日期函数
日期时间处理
{{ date.now }}
{{ date.format date "%Y-%m-%d" }}
{{ date.add_days date 7 }}
🔗 管道过滤器
使用管道
使用 | 符号链式调用函数
{{ name | string.upcase }}
{{ items | array.size }}
{{ text | string.truncate 50 | string.upcase }}
常用过滤器
常见的过滤器使用
{{ price | math.format "C" }}
{{ items | array.limit 10 }}
{{ html | html.strip }}
📏 空白符控制
波浪号 ~
移除前后的空白符和换行
{{~ if condition ~}}
内容
{{~ end ~}}
{{ ~ variable }}
{{ variable ~ }}
最佳实践
使用空白符控制
合理使用 ~ 控制输出格式,避免多余的空行和空格
避免复杂逻辑
模板中应尽量避免复杂的业务逻辑,将逻辑放在数据准备阶段
使用有意义的变量名
选择清晰、描述性的变量名,提高模板可读性
添加注释
为复杂的模板逻辑添加注释,便于维护
测试边界情况
考虑空值、空数组等边界情况,添加适当的条件判断
💬 注释
单行注释
使用 ## 添加注释
## 这是一个注释多行注释
使用 ##* ... *## 包裹多行注释
##* 这是多行注释 可以写很多行 *##