它们都使用相同的语法来插入变量。例如,如果我想以下如何将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