2

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

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

4

3 回答 3

8

从 EJS github 页面:

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

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

于 2011-11-05T16:35:14.020 回答
6

如果您使用快递:

app.set('view options', {
    open: '{{',
    close: '}}'
});
于 2011-11-20T14:44:14.677 回答
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'

您不能替换<and>字符。

于 2016-02-24T07:59:29.877 回答