2012-05-20 30 views
2

我試圖從Jade切換到Swig(被Swig的瘋狂性能吸引)作爲我的快速模板引擎,當我卡在這裏時 - 我從Express發送一個序列化JSON數組到Swig並使用Swig檢索數據這個循環在這裏:Swig(Node.js)中的JSON.parse()?

<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).titleJSON.parse(item)上面,而不是錯誤,我得到這個在我看來:

function parse() { [native code] } 

下面就來看看在item JSON對象:

item { 
    id  : 2, 
    title : 'City Life ', 
    author : 'Timothy J. Lindenburg', 
    date : 1337498792626, 
    indent : 0   
} 

簡單地說,我要訪問痛飲個別按鍵和item值,但我不能讓JSON.parse()來工作。如果有人指出我的方向正確(我被告知Swig基於Django模板,所以如果你使用過這些模板,這應該很簡單),如果有人會指出我會很感激。

+0

1.在將數組傳遞給Swig之前,不能解析該數組中的JSON項嗎?這意味着像'items = items.map(JSON.parse);'。 –

+0

當然,但我不想在同一個數組中運行兩次,一次使用map並再次使用'for'循環,這是出於性能原因。現在我得到了864個reqs/sec,我希望它能繼續提高。第二件事是我不確定如何在Swig中執行JavaScript函數;有一個變量和循環的語法,但沒有提到有關函數,所以我希望解決這個問題會告訴我如何去做其他的JS函數。 – vjk2005

回答

4

我不知道你爲什麼要解析它。在swig中它已經是JSON。 所以要獲得標題,請將{{ JSON.parse(item).title }}更改爲{{ item.title }}