改变express + node.js + ejs的代码包装types

在客户端ejs中,我使用[% code %]代替<% code %>来标记ejs代码,但是我想在express服务器端执行相同的操作。 在客户端,我会做类似var template = new EJS({text: template_src, type:'['});

这是我的节点代码:

 app.set('view engine', 'ejs'); app.register('.html', require('ejs')); app.get('/', function(req, res){ res.render('index.html', { title: 'My Site' }); }); 

你在哪里设置“types”参数,所以我可以改变这个选项

从EJS的github页面:

自定义标签也可以全局应用:

 var ejs = require('ejs'); ejs.open = '{{'; ejs.close = '}}'; 

您需要做的唯一一件事情就是在快速应用程序的开始处复制这些行,这就是全局应用更改(将打开和closures标记更改为任何您想要的)。

更新截至2016年7月20日的最新版本

截至最新版本的EJS,不能再使用自定义标签(请参阅https://github.com/mde/ejs/issues/55 )。 你所能做的就是将分隔符从默认%改为其他( delimiter选项)。 有关于重新启用这个的谈话。 见https://github.com/mde/ejs/issues/88和https://github.com/mde/ejs/issues/115

如果你使用快递:

 app.set('view options', { open: '{{', close: '}}' }); 

ejs v2。*使用不同的选项:

 var ejs = require('ejs'), users = ['geddy', 'neil', 'alex']; // Just one template ejs.render('<?= users.join(" | "); ?>', {users: users}, {delimiter: '?'}); // => 'geddy | neil | alex' // Or globally ejs.delimiter = '$'; ejs.render('<$= users.join(" | "); $>', {users: users}); // => 'geddy | neil | alex' 

您不能replace<>字符。