【问题标题】:JSON.parse() in Swig (Node.js)?Swig(Node.js)中的JSON.parse()?
【发布时间】: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


【解决方案1】:

我不知道你为什么要解析它。在 swig 中,它已经是 JSON。 所以要获得标题,请将 {{ JSON.parse(item).title }} 更改为 {{ item.title }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 2013-02-28
    • 2011-10-30
    • 2016-03-27
    • 2019-03-03
    • 1970-01-01
    • 2012-11-20
    • 2013-02-18
    相关资源
    最近更新 更多