Должен ли я поместить свое условие в шаблон или отобразить другой шаблон

#javascript #node.js #pug

Вопрос:

Я изучаю node js и использую механизм шаблонов pug для создания простой страницы входа/администратора для бронирования отелей.

Когда пользователь вошел в систему, страница индекса должна отличаться от страницы пользователя, не вошедшего в систему.

Должен ли я выполнить условие в моем шаблоне или условие в моем домашнем маршруте для отображения index_logged или index_not_logged?

В настоящее время занимаюсь

 app.get('/', (req, res) => {
  User.find({}, function(err, users) {
    if(err) {
      console.log(err);
    } else {
      res.render("index", {
        title: "Willkommen",
        users: users
      });
    }
  });
});
 

и в моем указательном пальце.мопс

 extends layout


block content
  if user
    h1 #{title}
    ul.list-group
      each user, i in users
        li.list-group-item
          a(href="/users/" user._id)= user.name
  else
    .jumbotron
      h1 #{title}
      a(href="/users/login").btn.btn-primary Anmelden
 

В данный момент я использую глобальную пользовательскую переменную.

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

1. Значит, у него две страницы в одном шаблоне против двух страниц и каждая в отдельном шаблоне? Вы должны использовать по одному файлу на страницу и направлять их в свой контроллер маршрутов.

2. В настоящее время рендеринг index.pug из моего приложения.используйте(‘/’ и делайте в index.pug что-то вроде, если пользователь, визуализируйте это, иначе визуализируйте это. Однако я не уверен, что есть правильный способ сделать это. Отредактировал вопрос, чтобы сделать его проще.

Ответ №1:

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

 app.get('/', (req, res) => {
  User.find({}, function(err, users) {
    if (err) {
      console.log(err);
      res.render("public_index");
    } else {
      res.render("index", {
        title: "Willkommen",
        users: users
      });
    }
  });
});
 

Но если две страницы очень похожи, но некоторые части отличаются, то визуализируйте одно и то же представление, но используйте if user (теоретически вы можете разместить его в любом месте файла представления), чтобы отобразить соответствующий контент соответствующим образом, например, то, что у вас есть в index.pug в вашем вопросе. Логика вашего приложения должна быть:

 app.get('/', (req, res) => {
  User.find({}, function(err, users) {
    let Users = undefined;
    if (err) {
      console.log(err);
    } else {
      Users = users
    }
    res.render("index", { title: "Wilkommen", users: Users });
  });
});
 

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

1. Спасибо, я разберусь с этим