其中 2 个自定义分隔符

ejs 2 custom delimiter

EJS2 只能将字符与尖括号一起使用 open/close:

ejs.delimiter = '$';
ejs.render('<$= users.join(" | "); $>', {users: users});

我想使用 {{ }} 而不是 <% %>,以前的版本将允许此 esj.open = '{{'esj.close = '}}'

有什么帮助吗?

如果不修改 module's source code,这是不可能的。

文档指出支持自定义分隔符:

https://github.com/tj/ejs#custom-delimiters

EJS 已更新并更改了维护者,因此可以在此处找到主要站点:https://ejs.co/ Github 在这里:https://github.com/mde/ejs

与以前版本的 EJS 不同,您现在不能完全使用自定义分隔符 - 您可以使用 'partial' 自定义分隔符 - 第一组括号不是可选的,但后面的字符是可选的。要设置自定义分隔符,您可以执行以下操作:

// app.js
const ejs = require('ejs');
ejs.delimiter = '?';
app.get('/', (req, res) => {
    res.render('index', {
        myVariable: 'Hey!'
    });
});

// index.ejs
<div>
    <p>
    <?=myVariable ?>
    </p>
</div>

// index.html (rendered output)
<div>
    <p>
    Hey!
    </p>
</div>

您可以添加完整的选项对象和其他内容,但如果您想更改默认分隔符,希望这能帮助您入门。

我使用自定义分隔符的解决方案是在模板上进行字符串替换

const template = fs.readFileSync(path.join(__dirname, './template.html'), 'utf8').replace('{{', '<%').replace('}}', '%>')

const render = ejs.compile(template)

这让我可以像这样声明我的模板:

{{ if (someVar) { }}
  {{= someVar }}
{{ } }}