Я пытаюсь переключиться с Джейд на Swig (заманивается безумным исполнением Swig) в качестве моего механизма шаблонов Express, когда я застрял здесь - я отправляю массив сериализованных JSON из Express в Swig и извлекаю данные в Swig, используя этот цикл здесь:JSON.parse() в Swig (Node.js)?
<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
}
Проще говоря, я хочу, чтобы получить доступ к отдельным ключи и значения item
в Swig, но я не могу получить JSON.parse(), чтобы работать. Был бы признателен, если бы кто-то указал мне в правильном направлении (мне сказали, что Swig основан на шаблонах Django, поэтому, если вы с ними работали, это должно быть легко).
1. Не могли бы вы разобрать элементы JSON в этом массиве, прежде чем передавать его Swig? Это означает что-то вроде 'items = items.map (JSON.parse);'. –
Конечно, но я не хотел запускать один и тот же массив дважды, один раз с картой и снова с циклом «for», по соображениям производительности. Сейчас я получаю 864 reqs/sec, и я хочу, чтобы это пошло еще выше. Во-вторых, я не уверен, как выполнять javascript-функции в Swig; есть синтаксис для переменных и циклов, но ничего не упоминается о функциях, поэтому я надеюсь, что решение этого покажет мне, как выполнять другие функции JS. – vjk2005