它們都使用相同的語法來插入變量。例如,如果我想以下如何將Underscore.js模板與EJS一起使用?
<%= username %>
在我的下劃線,我的主要EJS符,因爲它試圖取代用戶名和在主要頁面沒有這樣的變量存在。
它們都使用相同的語法來插入變量。例如,如果我想以下如何將Underscore.js模板與EJS一起使用?
<%= username %>
在我的下劃線,我的主要EJS符,因爲它試圖取代用戶名和在主要頁面沒有這樣的變量存在。
我認爲方括號將EJS工作在默認情況下:
[%= username %]
如果你需要更大膽的嘗試,在EJS GitHub的頁面介紹如何創建自定義標籤:
var ejs = require('ejs');
ejs.open = '{{';
ejs.close = '}}';
https://github.com/visionmedia/ejs
使用客戶端GitHub的例子,你需要做這樣的語法,當您呈現:
var html = require('ejs').render(users, { open: "^%", close: "%^" });
選項是render()
的第二個參數。
我有這個問題,並認爲我會分享我解決客戶端問題的解決方案。這是找您的逃生正則表達式(通過underscore.js docs)如何:
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};
var template = _.template("{{example_value}}");
更改<%=%>爲{{}}。
當我想要在後端(express)上使用ejs模板呈現網頁時,我遇到了同樣的問題,同時我必須在前端使用下劃線模板。
我試過Marc的回答,但它沒有幫助,我認爲它已過時使用新版本。在較新版本的ejs(我的是2.3.3
)中,您不能再使用ejs.open
和ejs.close
,而使用ejs.delimiter
。
我在ejs中將分隔符更改爲'$',所以ejs只能處理<$ $>
標記以插入變量並將<% %>
標記作爲無意義的語法。
app.set('view engine', 'ejs');
var ejs = require('ejs');
ejs.delimiter = '$';
app.engine('ejs', ejs.renderFile);
注:我補充上面的代碼中app.js
文件中明確的應用程序和它工作得很好,如果你想使用它的前端,只是通過{'delimiter': '$'}
在ejs.render(str, options)
作爲選項的說法。
我最近遇到這個問題,我不想重新配置EJS,所以我改變了下劃線如何插值,評估和轉義值。
默認情況下,這裏是當前下劃線模板設置:
_.templateSettings = {
interpolate: /<%([\s\S]+?)%>/g,
evaluate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
然後我的設置更新爲:
_.templateSettings = {
interpolate: /\{\{=([^}]*)\}\}/g,
evaluate: /\{\{(?!=)(.*?)\}\}/g,
escape: /\{\{-([^}]*)\}\}/g
};
換句話說,該片段上方將改變強調以下幾點:
插值
<%= ... %>
{{= ... }}
/\{\{=([^}]*)\}\}/g
評估
<% ... %>
{{ ... }}
/\{\{(?!=)(.*?)\}\}/g
逃生
<%- ... %>
{{- ... }}
/\{\{-([^}]*)\}\}/g
然後我下劃線的模板看起來是這樣的:
// Underscore
<script type="text/template">
<ul>
{{ _.each(collection, function(model) { }}
<li>{{= model.text }}</li>
<li>{{- model.textEscaped }}</li>
{{ }); }}
</ul>
</script>
...和我的EJS模板保持不變,我可以繼續使用默認的ERB語法插值/評估值:<% ... %>
和<%= ... %>
:
// EJS
<% if (isAuthenticated) { %>
<%= user.displayName %>
<% } %>
爲什麼你需要兩個?正如這裏提到的那樣,方括號是否起作用? http://code.google.com/p/embeddedjavascript/wiki/Testing – Marc 2012-04-23 14:47:43
我正在使用EJS與Backbone.js – deltanovember 2012-04-23 20:02:18
是方括號爲你工作? – Marc 2012-04-23 20:21:30