gpt4 book ai didi

javascript - Express.js自定义模板引擎(板 block )

转载 作者:数据小太阳 更新时间:2023-10-29 05:23:46 29 4
gpt4 key购买 nike

我正在尝试让板模板引擎与 express.js 一起工作。我最初的尝试是这样的:

app.register('.html', {
compile: function (str, options) {
var template = new plate.Template(str);
return function(locals) {
return template.render(locals, function(err, data) {
return data;
});
}
}
});

我看到问题是 template.render 没有返回任何东西(未定义)而是将数据传递给回调。我不确定在这种情况下如何让它工作,因为 Express 期望编译函数返回一个函数,该函数在调用时直接返回呈现的模板。

我在想也许我可以使用 promises 来解决这个问题,但也没有成功,因为 express 代码不期望返回 promise。我还没有 catch promise 的速度,所以我可能只是做错了:

app.register('.html', {
compile: function (str, options) {
var promise = new Promise();
var template = new plate.Template(str);
return function(locals) {
template.render(locals, function(err, data) {
promise.resolve(data);
});
return promise;
}
}
});

这是一个确实有效的自定义实现示例。区别在于下划线模板 template() 函数直接返回呈现的字符串,如下所示:

app.register('.html', {
compile: function (str, options) {
var template = _.template(str);
return function (locals) {
return template(locals);
};
}
});

我真的很想使用 Plate 模板,因为 {% block %} 标签太棒了。任何帮助表示赞赏。

相关文档:

plate's github docs

express.js app.register docs

最佳答案

plate 的创建者在我询问后立即为项目添加了补丁以使其与 express 兼容。 plate@0.0.13+ 有变化,你可以看到实现细节here

关于javascript - Express.js自定义模板引擎(板 block ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886678/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com