Зачем мне нужны шаблонные механизмы, такие как Jade или EJS на бэкэнд?

Я знаком с Angularjs (1.x) и использую шаблоны в директивах.

В настоящее время я изучаю nodejs и как часть движка шаблона курса. Каковы преимущества их использования на бэкэнде?

В настоящее время я не вижу никакого использования.

Ответ 1

Если у вас есть данные (скажем, из базы данных), которые нужно визуализировать для HTML, вы можете использовать механизм шаблонов для переноса данных и шаблона и отображения его в HTML (который впоследствии будет передан клиенту).

Если ваше приложение frontend делает то же самое, используя XHR-вызовы или что-то похожее на получение данных с сервера, обычно не полезно отображать на стороне HTML-сервера (вместо этого данные отправляются как JSON клиенту).

Итак, это зависит от того, как ваше приложение (как frontend, так и backend) структурировано, если имеет смысл или не использовать механизм шаблонов.

Существуют также гибридные решения, в которых исходный HTML отображается на стороне сервера, а затем клиентская сторона "берет верх". Это то, что, например, поддерживает React. Большая идея заключается в том, что вы можете использовать те же компоненты как на сервере, так и на клиенте, а при открытии страницы пользователь увидит полностью подготовленную начальную страницу (вместо того, чтобы клиентская сторона должна была получить сначала данные из бэкэнд, а затем рендеринг страницы).

Ответ 2

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

Например, вы можете отображать только HTML с помощью этого кода

app.get('/',function(req,res){
  res.sendFile(path.join(__dirname+'/index.html'));
  //__dirname : It will resolve to your project folder.
});

Но с двигателями вы можете отправлять данные в шаблон. http://expressjs.com/en/api.html#res.render

// pass a variable to the view
res.render('somePage', {
    title: 'Awesome title',
    userFriends: friendsList,
    name: 'loggedUserName'
});

И теперь на интерфейсных шаблонах (EJS в этом случае) будет заполняться html данными, которые вы отправляете. Таким образом, html стал динамическим, и вы можете сделать каждую страницу для каждого пользователя другой.

<ul>
  <% for(var i=0; i<userFriends.length; i++) {%>
     <li><%= userFriends[i] %></li>
  <% } %>
</ul>

С помощью всего лишь HTML вам нужно будет сделать много ненужных вызовов AJAX, чтобы получать и добавлять данные в html, что является плохими идеями.

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

Ответ 3

Механизм просмотра позволяет отображать HTML с параметрами. Например, используя squirrelly, я могу создать файл, который выглядит так:

<!DOCTYPE html>
<html>
  <head>
    <title>{{title}}</title>
  </head>
  <body>
   {(userIsSignedIn){<!-- if the user is signed in, display username and description-->
    <p>{{username}} is {{description}}</p>
    }}

    {(!userIsSignedIn){<!--if user isn't signed in, ask them to sign in-->
    <p>Sign in to view this page</p>
    }}

  </body>
</html>

Таким образом, я мог бы прослушивать, например, URL-адрес динамического профиля пользователя с помощью Express, а затем возвращать динамический контент.