Javascript 如何将下划线.js模板与EJS结合使用?
它们都使用相同的语法来插入变量。例如,如果我想要以下内容Javascript 如何将下划线.js模板与EJS结合使用?,javascript,node.js,underscore.js,ejs,Javascript,Node.js,Underscore.js,Ejs,它们都使用相同的语法来插入变量。例如,如果我想要以下内容 <%= username %> 在我的下划线中,我的主EJS中断,因为它试图替换用户名,而主页中不存在这样的变量。我认为默认情况下,方括号将在EJS中工作: [%= username %] 如果需要fancier,EJS github页面将介绍如何创建自定义标记: var ejs = require('ejs'); ejs.open = '{{'; ejs.close = '}}'; 我认为第二个“fancier”
<%= username %>
在我的下划线中,我的主EJS中断,因为它试图替换用户名,而主页中不存在这样的变量。我认为默认情况下,方括号将在EJS中工作:
[%= username %]
如果需要fancier,EJS github页面将介绍如何创建自定义标记:
var ejs = require('ejs');
ejs.open = '{{';
ejs.close = '}}';
- 我认为第二个“fancier”部分可能特定于服务器端应用程序
var html = require('ejs').render(users, { open: "^%", close: "%^" });
选项是
render()
的第二个参数。我遇到了这个问题,我想我会分享我找到的解决客户端问题的解决方案。下面是如何更改转义正则表达式(通过下划线.js):
更改为{{}。当我想在后端(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);
注意:我在express应用程序中的
app.js
文件中添加了上面的代码,它工作得很好,如果您想在前端使用它,只需在ejs.render(str,options)
中传递{'delimiter':'$}
作为选项参数。为什么需要这两个参数?方括号是否起作用,如本文所述?我正在使用EJS和主干。js方括号对你有用吗?不。我不仅需要一个自定义标记,还需要让EJS忽略我答案的新部分。
app.set('view engine', 'ejs');
var ejs = require('ejs');
ejs.delimiter = '$';
app.engine('ejs', ejs.renderFile);