2011-10-07 28 views
40

我有一個很重量級的查詢在服務器上導致新的頁面呈現,並且我想將查詢的一些結果傳遞給客戶端(作爲一個javascript數組對象)。這基本上是這樣,我不需要稍後再做一個單獨的JSON查詢來獲得相同的內容(大部分是靜態的)。數據最終會很有用,但最初並不是這樣,所以我沒有直接把它寫入文檔。在node + express + jade中將對象傳遞給客戶端?

app.get('/expensiveCall', function(req, res) { 
    // do expensive call 
    var data = veryExpensiveFunction(); 
    res.render('expensiveCall.jade', { 
     locals: { 
       data: data, 
       } 
     }); 
    }); 
}); 

數據是一個對象數組,只有一些最初被使用。我想要通過整個數據或一些子集(取決於情況)。我的玉看起來像普通的玉,但我想包括像

<script type="text/javascript"> 
var data = #{data}; 
</script> 

但這不起作用(這是一個對象數組)。

回答

87

您不能內聯JS對象這樣,但你可以前JSON.stringify它:

<script type="text/javascript"> 
    var data = !{JSON.stringify(data)}; 
</script> 
+1

對不起應該說更早:玉逃逸所有發出的內容,這意味着我也不得不取消轉義它,目前還不清楚如何關閉逃跑。我認爲在快遞內部有一些辦法,但我不知道如何。我可能只是切換到一個不同的模板引擎,但它意味着分叉代碼:-(。 – killermonkeys

+9

如果您使用'!{}'而不是'#{}'應該關閉轉義。 – Adrien

+0

ack! ,有道理,謝謝! – killermonkeys

相關問題