#html #node.js #express
#HTML #node.js #выразить
Вопрос:
Ни движка рендеринга, ни фреймворка, отличного от express.
Мы хотим отобразить любой список из запроса к базе данных без помощи механизма рендеринга.
Каков голый кодовый эквивалент механизма рендеринга для списков данных?
Это пример с pug, затем с html :
app.js
collection.query(q, function(err, docs) {
if (err) {
res.status(500).send({
error: err
});
return;
}
console.log("Got docs: ",docs);
res.render('layout', {
data : docs
});
});
HTML
<ul type="1">
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>
Как вы кодируете это для рендеринга без pug, с данными, поступающими из ответа на запрос?
ul
each item in data
li=item.name
Комментарии:
1. Просто.. делайте то, что вы уже сказали? Если вам не нужны какие-либо фреймворки или движки рендеринга и т.д., То (а) почему вы показываете файл .pug (который является шаблоном, требующим движка рендеринга pug) и (б) просто генерируете обычный текст HTML и отправляете его в качестве ответа?
2. Если вы генерируете html подобным образом, вы вскоре столкнетесь с теми же проблемами, с которыми столкнулись создатели этих движков шаблонов, что побудило их в первую очередь разработать движки шаблонов.
Ответ №1:
const createList = items => `<ol>${items.map(i => `<li>${i}<li/>`).join("")}<ol/>`;
collection.query(q, function(err, docs) {
if (err) {
res.status(500).send({
error: err
});
return;
}
console.log("Got docs: ",docs);
res.send(createList(docs))
});
При использовании функций со стрелками и литералов шаблонов вы можете изменить функции со стрелками на обычные functions
, а литералы шаблонов — на строку, объединенную с помощью
, если вы используете более старую версию nodejs.
Комментарии:
1. Здесь, если кто-то предоставит ответ на ваш вопрос, вы можете пометить ответ как правильный, просто сказав (@Conan).
2. вы передаете undefined как элементы, возможно, вам нужно проверить переменную docs