数据结构
常量(字面量)
支持以下几种字面量
- 布尔值:
true、false、True、False。 - 整数:例如:
-1、0、1、2。 - 浮点数:例如:
1.2、1.0。 - 字符串:用引号(单引号
"或者双引号或反字符,注意一定是英文半角)包裹的文本,前后引号一定要配对。如果内部包括引号自身,外围引号换另外一种引号。例如"欢迎使用'道盒'笔记"。 - 列表:使用
[和]包裹,各项以半角逗号分割的列表,所有列表项必须是同一种类型,允许末尾逗号。例如["abc", "efg",]。
变量
变量通常定义在模板上下文中,也可以在模板中定义。
变量类型除了包括上面所有字面量类型外,还有对象类型。对象是一种包括一个或多个键值对的形式,键名必须是字符串,值可以是其他任意类型,并且各项之间类型可以不同,同时也可以继续是对象,从而形成嵌套。
变量可以通过{{var_name}}的形式来渲染输出。
系统全局变量
__publish_context当前模板的上下文__qs当前页面查询参数(Query string),包括sitemap.**.qs配置项,页面参数覆盖同名配置项__configconfig配置项__page_path当前页面对应的文件路径__page_path_base同__page_path, 但不含扩展名__breadcrumbs面包屑导航。 数据结构为[{"caption":"", url: ""}]__lang设定的语言代码__tpl_path当前模板路径__host当前预览地址的主机
点操作符
访问列表时,可以使用var.0的形式访问第一项,起始编号从0开始。
访问对象时,使用var.key的形式获取指定key的内容。
方括号操作符
访问列表时,可以使用var[0]的形式访问第一项。
访问对象时,使用var["key"]的形式获取指定key的内容。
当需要访问多层级嵌套对象时,可使用多次方括号取出。例如:cities["zhongguo"]["hubei"]["wuhan"]。操作符后面的内容称作索引,该索引除了可以是用字面量外,有效的的变量也是可以的。
通过以上操作符访问未定义的变量会引发错误。
表达式
支持下面几类表达式
数学运算符
道盒发布可以使用基本的数字运算符,仅允许对数字(整数、浮点数)以及数字变量运算。
+将左右两个操作数相加。如{{1+2}}输出3。-将左右两个操作数相减。如{{2-1}}输出1。*将左右两个操作数相乘。如{{1*2}}输出2。/将左右两个操作数相除。如{{ 10 / 2 }}输出5。%将左右两个操作数取余。如{{ 2 % 2 }}输出0。
运算符优先级:从低到高,同级先计算左边。
+、-*、/、%
比较运算符
==两边相等!=两边不相等>左边大于右边>=左边大于或等于右边<左边小于右边<=左边小于或等于右边
逻辑运算符
and逻辑与,两边都为真返回真or逻辑或,两边有一边为真返回真not逻辑非,对操作数取反
连接符
连接所有的操作数,操作数包括字符串、数字以及其他标识符(如函数、宏等)
{{ "hello " ~ 'world' ~ `!` }}
{{ an_ident ~ " and a string" ~ another_ident }}
{{ an_ident ~ another_ident }}
in运算符
检查左操作数是否包含在右操作数内。
{{ some_var in [1, 2, 3] }}
{{ 'index' in page.path }}
{{ an_ident not in an_obj }}