2017-07-14 80 views
1

我有我的玉文件中像這樣:如何將Jade字符串插值傳遞給JS腳本文件?

script(text='text/javascript', src='/javascript/user_options.js') 
    var firstName = #{firstnameDisplay}; 

我user_options.js:

var displayName = firstName; 

我仍然得到 '的firstName' 變量爲未定義。 Jade文件中的字符串插值#{firstnameDisplay}被正確定義。任何想法或解決方案?有沒有辦法在Jade中聲明JS變量並在JS腳本文件中使用它?

其他資源在線推薦JSON,但我寧願只使用Jade字符串插值。

+0

裝入VAR後的腳本中定義。 – Alan

回答

2

不要做...產生的js代碼這樣有一堆缺點。例如,可以將該值放在隱藏字段中,或者作爲某個元素中的數據屬性,然後在您的js文件中您可以請求該值。

第一個選項

input(type="hidden", value=#{firstnameDisplay}, id="firstNameDisplay") 

第二個選項

div(id="firstNameDisplay", data-firstNameDisplay=#{firstnameDisplay}) 

,那麼你可以檢索與jQuery或香草JS該值。

var displayName = document.getElementById('firstNameDisplay').value 

var displayName = document.getElementById('firstNameDisplay').dataset.firstNameDisplay; 
+0

你能讓我知道它有什麼樣的缺點嗎? – smupyknight

+0

沒有緩存,捆綁或縮小的可能性。您應該非常小心您的js邏輯,以避免安全風險,因爲您通常會根據用戶輸入生成js代碼。對於深入研究,您可以看到[動態JavaScript的意外危險](https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-lekies.pdf)。我知道你的樣品很簡單,你可以安全地走,但重要的是要知道更好的替代品 –

+1

這是非常好的案例和參考。給予好評! – smupyknight

0

你需要嘗試這樣的事情

script. 
    var firstName = #{firstnameDisplay}; 

script(text='text/javascript', src='/javascript/user_options.js') 
相關問題