循环

尽管已经支持JavaScript原生代码,Jade还是支持了一些特殊的标签,它们可以让模板更加易于理解,其中之一就是each, 这种形式:

  1. each VAL[, KEY] in OBJ

一个遍历数组的例子 :

  1. - var items = ["one", "two", "three"]
  2. each item in items
  3. li= item

渲染为:

  1. <li>one</li>
  2. <li>two</li>
  3. <li>three</li>

遍历一个数组同时带上索引:

  1. items = ["one", "two", "three"]
  2. each item, i in items
  3. li #{item}: #{i}

渲染为:

  1. <li>one: 0</li>
  2. <li>two: 1</li>
  3. <li>three: 2</li>

遍历一个数组的键值:

  1. obj = { foo: 'bar' }
  2. each val, key in obj
  3. li #{key}: #{val}

将会渲染为:&lt;li&gt;foo: bar&lt;/li&gt;

Jade在内部会把这些语句转换成原生的JavaScript语句,就像使用 users.forEach(function(user){, 词法作用域和嵌套会像在普通的JavaScript中一样:

  1. each user in users
  2. each role in user.roles
  3. li= role

如果你喜欢,也可以使用for

  1. for user in users
  2. for role in user.roles
  3. li= role