Специальный шаблонный движок Express.js (планшет)
Я пытаюсь заставить движок шаблонов плит работать с 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 ожидает, что функция компиляции возвратит функцию, которая непосредственно возвращает визуализированный шаблон при вызове.
Я подумал, что, возможно, я смогу использовать обещания для решения этой проблемы, но там тоже не удалось, поскольку экспресс-код не ожидает возврата обещания. Я не слишком разбираюсь в обещаниях, так что, возможно, я делаю это неправильно:
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%} очень хорош. Любая помощь приветствуется.
соответствующая документация: