更改express + node.js + ejs的代码包装类型

时间:2011-11-05 15:12:28

标签: node.js express ejs

在客户端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' });
});

你在哪里设置&#34;类型&#34;参数,所以我可以改变这个选项

3 个答案:

答案 0 :(得分:7)

From the EJS github page:

  

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

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

你唯一需要做的就是在Express应用程序的开头复制这些行,就是这样 - 全局应用更改(将打开和关闭标记更改为你想要的任何内容)。

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

从最新版本的EJS开始,不再使用自定义标签(请参阅https://github.com/mde/ejs/issues/55)。您所能做的就是将分隔符从默认%更改为其他(delimiter选项)。 有关于重新启用此功能的讨论。请参阅https://github.com/mde/ejs/issues/88https://github.com/mde/ejs/issues/115

答案 1 :(得分:4)

如果你使用快递:

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

答案 2 :(得分:1)

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'

您无法替换<>字符。