表达式
你可以使用和 javascript 一样的字面量。
- Strings:
"How are you?"
,'How are you?'
- Numbers:
40
,30.123
- Arrays:
[1, 2, "array"]
- Dicts:
{ one: 1, two: 2 }
- Boolean:
true
,false
运算 (Math)
Nunjucks 支持运算 (但尽量少用,把逻辑放在代码中),可使用以下操作符:
- Addition:
+
- Subtraction:
-
- Division:
/
- Division and integer truncation:
//
- Division remainder:
%
- Multiplication:
*
- Power:
**
可以如下使用:
{{ 2 + 3 }} (outputs 5)
{{ 10/5 }} (outputs 2)
{{ numItems*2 }}
比较 (Comparisons)
==
===
!=
!==
>
>=
<
<=
Examples:
{%-` 会去除标签之前的空白字符。
## 表达式
你可以使用和 javascript 一样的字面量。
* Strings: `"How are you?"`, `&# 39;How are you?&# 39;`
* Numbers: `40`, `30.123`
* Arrays: `[1, 2, "array"]`
* Dicts: `{ one: 1, two: 2 }`
* Boolean: `true`, `false`
### 运算 (Math)
Nunjucks 支持运算 (但尽量少用,把逻辑放在代码中),可使用以下操作符:
* Addition: `+`
* Subtraction: `-`
* Division: `/`
* Division and integer truncation: `//`
* Division remainder: `%`
* Multiplication: `*`
* Power: `**`
可以如下使用:
```jinja
{{ 2 + 3 }} (outputs 5)
{{ 10/5 }} (outputs 2)
{{ numItems*2 }}
比较 (Comparisons)
==
===
!=
!==
>
>=
<
<=
Examples:
{% if numUsers < 5 %}...{% endif %}
{% if i == 0 %}...{% endif %}
Logic
and
or
not
- 可使用大括号来分组
Examples:
{% if users and showUsers %}...{% endif %}
{% if i == 0 and not hideFirst %}...{% endif %}
{% if (x < 5 or y < 5) and foo %}...{% endif %}
If 表达式
和 javascript 的三元运算符 (ternary operator) 一样,可使用 if 的内联表达式:
{{ "true" if foo else "false" }}
当 foo 为 true 的时候最终输出 "true" 否则为 "false",对于获取默认值的时候非常有用:
{{ baz(foo if foo else "default") }}
函数调用 (Function Calls)
如果你传入一个函数,则可以直接调用
{{ foo(1, 2, 3) }}
正则表达式
你可以像在JavaScript中一样创建一个正则表达式:
{{ /^foo.*/ }}
{{ /bar$/g }}
正则表达式所支持的标志如下。查阅Regex on MDN以获取更多信息。
g
: 应用到全局i
: 不区分大小写m
: 多行模式y
: 粘性支持(sticky)