Как отобразить список без механизма рендеринга в javascript?

#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