外观
模板字符串
约 657 字大约 2 分钟
2026-02-06
模板 是 Mock Service 的灵魂. 整个库的架构设计, 本质上都是为了支撑模板的高效生成与精准解析.
什么是模板字符串?
模板字符串是一种声明式的语法, 允许你通过简单的文本描述来构建复杂的数据生成逻辑.
核心标识符
模板使用了标识符机制来区分不同的资源类型:
$(生成器): 代表调用一个动态数据生成逻辑. 例如{{$string.uuid}}.@(变量): 代表引用全局变量系统中的静态或动态存储值. 例如{{@userName}}.=(自定义): 代表将输入的字符串作为js代码执行, 并返回执行结果. 例如{{=1+4}}.
语法结构解析
一个典型的模板定义如下:
{{标识符主体(参数)|处理器(参数)}}
- 双大括号
{{ }}: 模板的边界标识符. - 分类与定位:
- 生成器: 使用
{{$分类ID.生成器ID(参数)}}. - 变量: 使用
{{@变量名}}. - 自定义: 使用
{{=js代码}}.
- 生成器: 使用
- 处理链
|: 初始值(无论是生成的还是取值的)会沿着管道依次传递给处理器进行二次加工. - 参数传递
():- 对象参数: 使用
{key=value}形式. 例如({length=10,type="hex"}). - 简单参数: 如果方法只需一个参数, 可直接简写. 例如
(114514). - 赋值符: 参数内部统一使用
=进行赋值, 多个参数间用,分隔.
- 对象参数: 使用
变量系统
于 [0.0.3] 版本引入.
变量系统允许你在 Mock 过程中实现数据的跨区域共享与持久化.
变量的引用与处理
你可以直接通过 @ 符号访问存储在 mockService 中的变量, 并且变量同样支持使用处理器:
{{@orderId|upper}}
注意: 由于变量不属于特定的生成器分类, 变量所使用的处理器将会在全局处理器池中进行全域搜索.
进阶特性
递归嵌套
模板支持深度嵌套. 你可以在一个模板的参数位置, 嵌入另一个完整的模板. 解析器会从最内层开始递归执行, 实现极具灵活性的组合.
示例概念:
{{$string.uuid|concat("{{$string.uuid}})")}}先生成一个uuid, 随后在生成一个uuid, 最后将这两个字符串拼接起来.
只需要了解概念, 模板不需要手动硬背, 我们提供了 generateTemplate 方法来辅助你生成$类型的模板字符串的喵~
版权所有
版权归属:Erhai-lake