表达式

你可以使用和 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: **
    可以如下使用:
  1. {{ 2 + 3 }} (outputs 5)
  2. {{ 10/5 }} (outputs 2)
  3. {{ numItems*2 }}

比较 (Comparisons)

  • ==
  • ===
  • !=
  • !==
  • >
  • >=
  • <
  • <=
    Examples:
  1. {%-` 会去除标签之前的空白字符。
  2. ## 表达式
  3. 你可以使用和 javascript 一样的字面量。
  4. * Strings: `"How are you?"`, `&# 39;How are you?&# 39;`
  5. * Numbers: `40`, `30.123`
  6. * Arrays: `[1, 2, "array"]`
  7. * Dicts: `{ one: 1, two: 2 }`
  8. * Boolean: `true`, `false`
  9. ### 运算 (Math)
  10. Nunjucks 支持运算 (但尽量少用,把逻辑放在代码中),可使用以下操作符:
  11. * Addition: `+`
  12. * Subtraction: `-`
  13. * Division: `/`
  14. * Division and integer truncation: `//`
  15. * Division remainder: `%`
  16. * Multiplication: `*`
  17. * Power: `**`
  18. 可以如下使用:
  19. ```jinja
  20. {{ 2 + 3 }} (outputs 5)
  21. {{ 10/5 }} (outputs 2)
  22. {{ numItems*2 }}

比较 (Comparisons)

  • ==
  • ===
  • !=
  • !==
  • >
  • >=
  • <
  • <=
    Examples:
  1. {% if numUsers < 5 %}...{% endif %}
  2. {% if i == 0 %}...{% endif %}

Logic

  • and
  • or
  • not
  • 可使用大括号来分组
    Examples:
  1. {% if users and showUsers %}...{% endif %}
  2. {% if i == 0 and not hideFirst %}...{% endif %}
  3. {% if (x < 5 or y < 5) and foo %}...{% endif %}

If 表达式

和 javascript 的三元运算符 (ternary operator) 一样,可使用 if 的内联表达式:

  1. {{ "true" if foo else "false" }}

当 foo 为 true 的时候最终输出 "true" 否则为 "false",对于获取默认值的时候非常有用:

  1. {{ baz(foo if foo else "default") }}

函数调用 (Function Calls)

如果你传入一个函数,则可以直接调用

  1. {{ foo(1, 2, 3) }}

正则表达式

你可以像在JavaScript中一样创建一个正则表达式:

  1. {{ /^foo.*/ }}
  2. {{ /bar$/g }}

正则表达式所支持的标志如下。查阅Regex on MDN以获取更多信息。

  • g: 应用到全局
  • i: 不区分大小写
  • m: 多行模式
  • y: 粘性支持(sticky)