#javascript #html #node.js
#javascript #HTML #node.js
Вопрос:
У меня есть этот фрагмент кода внутри контроллера:
exports.getintroDetails = async (req, res) => {
try {
const details = await IntroModel.find();
return res.render("final", { details , user:req.user });
} catch (error) {
console.log(error.message);
}
};
Этот код, как и ожидалось, отображает конечный файл.ejs с заданными данными.
Но вместо этого я хочу показать необработанный html, который мы получаем после рендеринга final.ejs с заданными данными. Есть ли какой-нибудь способ сохранить необработанный HTML-код в виде строки вместо его рендеринга?
Итак, вместо того, чтобы:
return res.render("final", { details , user:req.user });
Я хочу что-то вроде этого:
return res.send( view-source( res.render("final", { details , user:req.user }) ) );
Есть ли какая-либо функция, подобная view-source()
описанной выше?
Комментарии:
1. Эмм, просто прочитайте вопрос еще раз.. Вы хотите иметь необработанный html?? Или html перед отправкой? Для получения необработанного html вы можете прочитать файл шаблона, используя
fs
. ..2. @SilvanBregy я имею в виду html перед отправкой…
3. Хорошо, это в моем ответе ^^
Ответ №1:
Согласно документам, вы можете предоставить a callback
, который будет выполнен с отображением html
. Когда предоставляется обратный вызов, ответ не будет выполнен автоматически.
exports.getintroDetails = async (req, res) => {
try {
const details = await IntroModel.find();
return res.render("final", { details , user:req.user }, (err, html) => {
console.log('rendered html!', html)
// now, the response has to be made manually.
res.status(200).send(html)
});
} catch (error) {
console.log(error.message);
}
};
Также возможно отобразить его, используя app.render()
только для получения html
.
Из документов
Подумайте о app.render() как о служебной функции для генерации отображаемых строк представления. Внутренне res.render() использует app.render() для отображения представлений.
app.render('final', function (err, html) {
// ...
})
Комментарии:
1.
html
не определено.2. и
err
?? . я только что протестировалres.render()
локально, и это сработало. Я использовал"express": "4.16.x",