【发布时间】:2012-05-20 07:33:19
【问题描述】:
当我被困在这里时,我正试图从 Jade 切换到 Swig(被 Swig 的疯狂性能所吸引)作为我的 Express 模板引擎 - 我正在将一系列序列化 JSON 从 Express 发送到 Swig 并在 Swig 中检索数据在这里使用这个循环:
<ul id = "list">
{% if items %}
{% for item in items %}
{{ JSON.parse( item ).title }}
{% endfor %}
{% endif %}
</ul>
...但我明白了:
SyntaxError: Unexpected token )
at Object.Function (unknown source)
at createTemplate (/home/vijay/node_modules/swig/index.js:72:14)
at getTemplate (/home/vijay/node_modules/swig/index.js:109:26)
at Object.compile (/home/vijay/node_modules/swig/index.js:153:16)
如果我将上面的 JSON.parse( item ).title 更改为 JSON.parse( item ),我认为不会出现错误:
function parse() { [native code] }
下面是item JSON 对象:
item {
id : 2,
title : 'City Life ',
author : 'Timothy J. Lindenburg',
date : 1337498792626,
indent : 0
}
简单地说,我想在 Swig 中访问 item 的各个键和值,但我无法让 JSON.parse() 工作。如果有人能指出我正确的方向,将不胜感激(我听说 Swig 是基于 Django 模板的,所以如果你使用过这些模板,这应该很容易)。
【问题讨论】:
-
1.在将它传递给 Swig 之前,您不能解析该数组中的 JSON 项吗?这意味着类似
items = items.map(JSON.parse);。 -
当然,但是出于性能原因,我不想两次运行同一个数组,一次使用地图,另一次使用“for”循环。现在我得到 864 reqs/sec,我希望它更高。第二件事是我不确定如何在 Swig 中执行 javascript 函数;有变量和循环的语法,但没有提到函数,所以我希望解决这个问题也能告诉我如何做其他 JS 函数。
标签: javascript node.js template-engine swig-template