9

它们都使用相同的语法来插入变量。例如,如果我想要以下

<%= username %>

在我的下划线中,我的主 EJS 中断,因为它试图替换用户名并且主页中不存在这样的变量。

4

3 回答 3

9

我遇到了这个问题,并认为我会分享我为解决客户端问题而找到的解决方案。这是您更改转义正则表达式的方式(通过 underscore.js文档):

_.templateSettings = {
    interpolate : /\{\{(.+?)\}\}/g
};
var template = _.template( "{{example_value}}");

将 <%= %> 更改为 {{ }}。

于 2012-08-19T01:39:08.487 回答
8

我认为方括号默认可以在 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().

于 2012-04-23T14:53:04.653 回答
1

当我想在后端(快递)上使用 ejs 模板渲染网页时,我遇到了同样的问题,同时我不得不在前端使用下划线模板。

我尝试了 Marc 的回答,但没有帮助,我认为在较新版本中使用它已经过时了。在较新版本的 ejs(mine is 2.3.3) 中,您不能再使用ejs.openand ejs.closeejs.delimiter而是使用。

我在 ejs 中将分隔符更改为“$”,因此 ejs 只会处理<$ $>标签以插入变量并将<% %>标签视为无意义的语法。

app.set('view engine', 'ejs');
var ejs = require('ejs');
ejs.delimiter = '$';
app.engine('ejs', ejs.renderFile);

NOTE: I add the code above in app.js file in express applications and it worked fine, and if you want to use it on front-end, just pass {'delimiter': '$'} in ejs.render(str, options) as options argument.

于 2015-08-20T07:57:23.143 回答