2011-06-29 88 views
4

我真的很想使用Javascript模板系統和Django一起使用。 Mustache.js(及其衍生物)的語法和風格確實與我保持一致。問題是Mustache使用的分隔符標記與Django模板系統的語法無法很好地發揮作用。使用Django的Javascript模板

有沒有什麼好的方法一起使用它們?

我試着用this verbatim snippet來正確渲染JS模板。該解決方案的問題是我仍然有時需要JS內部的Django變量或URL。

我也嘗試過使用改小鬍子的分隔符

{{=[[ ]]=}} 

然而,不允許使用部分標記,如{{#}}。作者說他打算在未來的版本中完全消除這種能力。

是否有Javascript的任何模板庫緊隨Mustache.js,但使用不同的分隔符?或者是否有另一種更改Mustache.js使用的分隔符的解決方案?

回答

0

EJS是一個很不錯的模板系統。它使用<% %>標籤。

編輯:More templating libs

+0

EJS似乎向後做東西給我。儘管如此,我會仔細看看。感謝您在microjs.com上的提示! – Matthias

4

我用jQuery的模板與django。最終,我決定最好的辦法是:

  • 把所有的JavaScript爲靜態的JavaScript文件,併爲他們提供服務時沒有任何服務器端處理的Django模板提供所有的HTML掛鉤(ID或類),但沒有JS
  • 在JS使用「的document.ready」加jQuery選擇插入標記到頁面並附加事件
  • 如果JS需要的數據然後進行Ajax調用。

我軟化的最後一個,可能嵌入數據作爲JSON塊到Django模板,也許在這做的比設定變量不再是模板的底部也有一個短的JS /參數指示js如何渲染頁面 - 服務器端的一些線索告訴它該怎麼做。

這樣:轉義字符之間

  1. 爭成爲一個非問題
  2. 你不必不斷地問自己「是這個代碼在服務器或客戶端上運行的」因爲你」再不是要兩者同時寫入到一個文件
  3. JavaScript代碼必然是更好地組織和重複使用的