Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将下划线.js模板与EJS结合使用?_Javascript_Node.js_Underscore.js_Ejs - Fatal编程技术网

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”部分可能特定于服务器端应用程序

使用客户端GitHub示例,渲染时需要执行如下语法:

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);