You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{for x in customer.getRecentOrders()}
${x_index} : ${x.orderNumber} <br/>
{forelse}
You have no recent orders.
{/for}
以下是与上边代码功能相同的伪代码
var __LIST__x = customer.getRecentOrders();
if (__LIST__x != null && __LIST__x.length > 0) {
for (var x_index in __LIST__x) {
var x = __LIST__x[x_index];
${x_index} : {$x.orderNumber} <br/>
}
} else {
You have no recent orders.
}
变量声明
{var varName}
{var varName = varInitExpr}
varName可以是任何合法的JavaScript变量名
varinitExpr不可以包含}
示例:
{var temp = crypto.generateRandomPrime(4096)}
Your prime is ${temp}.
宏声明
{macro macroName(arg1, arg2, ...argN)}
...body of the macro...
{/macro}
Hello, ${user.firstName}.
An example of expression markup in JST looks like...
{cdata END_OF_THE_CDATA_SECTION}
${customer.firstName} ${customer.lastName}
END_OF_THE_CDATA_SECTION
...which shows a customer's name.
Let me repeat that...
{cdata}
${customer.firstName} ${customer.lastName}
{/cdata}
...will show a customer's name.
以上模板会输出以下内容:
Hello, Steve.
An example of expression markup in JST looks like...
${customer.firstName} ${customer.lastName}
...which shows a customer's name.
Let me repeat that...
${customer.firstName} ${customer.lastName}
...will show a customer's name.
TrimPath模板引擎语法
本文翻译自JavaScript Template Syntax
表达式与表达式修饰符
expr
可以是不包含右花括号}
的任何合法JavaScript表达式modifierName[:argExpr1[,argExpr2[,argExprN]]]
argExpr
可以是任何合法的expr
这里有一份内置的修饰符列表,你也可以通过TrimPath提供的API来创建自定义的修饰符。
表达式还可以写成
${% customer.firstName %}
这种形式,多出的%
字符允许你的表达式中出现花括号}
。例如:表达式中的空白字符是可选的,你也可以写成下面的格式:
声明
声明标签可以嵌套使用。
控制流
testExpr
可以是任何不包含}
的JavaScript表达式testExpr
不需要被(
和)
包围示例:
TrimPath引擎还定义了一个帮助方法叫做
defined(str)
,它可以检查给定的参数是否是JavaScript中的undefined
值。通过它可以很方便的判断某个值是否被定义:循环
varName
可以是任何合法的JavaScript变量名称listExpr
是一个JavaScirpt表达式,它执行结果必须是数组,对象或是null值中的1种。listExpr
只会被执行一次。循环过程中可以访问2个额外的变量:
__LIST__varName
- 保存了listExpr
的执行结果varName_index
- 保存了循环过程中当前值对应的索引或是键名。示例:
变量声明
varName
可以是任何合法的JavaScript变量名varinitExpr
不可以包含}
示例:
宏声明
macroName
可以是任何合法的JavaScript变量名。${macroName()}
的形式调用一个宏。示例:
默认情况下,宏只能在定义它的模板中使用。如果你想导出一个宏以便在其他模板中复用,一种方法就是把保存一份宏的引用到
contentObject
中(contentObject
就是你调用template.process
方法时传递的参数)。在调用process
方法前先设置'contextObject['exported'] = {};
,然后可以在末班中通过这种方法获得宏的引用:你也可以直接设置
contextObject['exported'] = contextObject;
,这样做也可以工作,但是会造成循环引用。CDATA文本块
你可以使用
{cdata EOF}...EOF
或是{cdata}...{/cdata}
这2中语法来告诉模板引擎忽略对特定文本块的处理。这些文本块会被直接输出,其中包含的任何标签都不会被解析。当你需要通过JavaScript模板生成其他JavaScript模板时会非常方便。EOF
可以是任何不包含}
的标记字符串。标记字符串用来标示一个文本块的结束。示例:
以上模板会输出以下内容:
嵌入的JavaScript
eval代码块
EOF
可以是任何不包含}
的文本。{eval}
块可以用来在模板中定义多行的JavaScript事件处理函数。例如:需要注意的是,在上边的事例中我们_没有_使用
var
关键字来声明变量,例如var sel_onchange = function() {...}
。这是为了保证sel_onchange
在全局作用域中以便可以被事件处理机制访问到。minify块
{minify}
块允许你在HTML属性中嵌入多行的JavaScript或CSS代码。对JavaScript来说,这可以很方便的编写多行的事件处理函数。例如:对应CSS来说,
{minify}
允许你方便的嵌入多行行内样式代码,例如:The text was updated successfully, but these errors were encountered: