他们都使用相同的语法来插入变量。例如,如果我想要以下内容:
在我的Underscore中,我的主要EJS出现了问题,因为它试图替换用户名,但是在主页面中不存在这样的变量。
<%= username %>
在我的Underscore中,我的主要EJS出现了问题,因为它试图替换用户名,但是在主页面中不存在这样的变量。
<%= username %>
我遇到了这个问题,想和大家分享一下我在客户端解决问题的方法。以下是如何更改转义正则表达式(通过underscore.js 文档):
_.templateSettings = {
interpolate : /\{\{(.+?)\}\}/g
};
var template = _.template( "{{example_value}}");
将 <%= %> 更改为 {{ }}。
[%= 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()
的第二个参数。
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);
{'delimiter': '$'}
作为选项参数传递给 ejs.render(str, options)
。