Как динамически отображать экспресс-представления

#node.js #express #ejs

#node.js #экспресс #ejs

Вопрос:

Я новичок в express JS и пытаюсь создать CMS, подобную этой:

  1. У пользователей есть конструктор страниц, где они могут перетаскивать различные компоненты на страницу.
  2. каждый компонент имеет свои собственные данные, которые также определяются пользователем
  3. У каждого компонента есть свой собственный шаблон представления

Итак, я должен проверить, какие компоненты должны загружаться, подготовить данные для каждого из них, отправить эти данные в соответствующий шаблон, отобразить один большой HTML-код и отправить клиенту.

Я знаю, слишком сложно объяснять, как это создать, но любые учебные пособия, примеры, ресурсы были бы оценены.

Ответ №1:

IIUC, вы можете выполнить это с помощью include функции, которая есть в большинстве языков шаблонов. Для примера я буду использовать ejs . Кроме того, я предполагаю, что вы знаете, как получить данные для пользовательских выборов на свой сервер.

на вашем app.js:

 app.get('/someRoute', function(req, res) {

    var data = //get user data here

    res.render('someTemplate', {data:data});
});
  

someTemplate.ejs:

 <%- include('header') %> //you should do this on every page

<% if (data == 'foo') { %>
   <%- include('foo', {data:data}) %> //note that you can pass data to templates like this
<% } %>

<% if (data == 'bar') %>
    <%- include('bar') %>
<% } %>

<% include('footer') %>
  

foo.ejs:

 //some component here
  

Если вы хотите прочитать больше, ознакомьтесь с документами.

Надеюсь, это поможет!

Ответ №2:

Для этой цели вы можете использовать шаблонизатор, поскольку он позволяет вам использовать статические файлы шаблонов в вашем приложении. Во время выполнения механизм шаблонов заменяет переменные в файле шаблона фактическими значениями и преобразует шаблон в HTML-файл, отправляемый клиенту. Такой подход упрощает разработку HTML-страницы.

Некоторыми популярными движками шаблонов, которые работают с Express, являются Pug, Mustache и EJS. Генератор приложений Express использует по умолчанию Jade, но он также поддерживает несколько других.

Также проверьте эту ссылку

Комментарии:

1. Я использую шаблонизаторы… проблема в том, что представления должны генерироваться динамически… например: Клиент выбирает, чтобы на одной странице было: — Галерея — Форма обратной связи — Слайдер 1. проверьте базу данных и посмотрите список компонентов на этой странице 2. сгенерируйте данные для каждого компонента 3. (?) сгенерируйте макеты и отправьте обратно. Но, как вы могли видеть, я не могу определить эти 3 компонента частично в основном шаблоне жестко.