Templating Engine для Node, что НЕ Джейд

Джейд действительно очень аккуратный, но мне лично не нравится синтаксис и его внешний вид. Да, умею писать просто:

body
  h1 Hello
  p This is 
    b bold

Это круто и все, но я предпочитаю внешний вид HTML/XML. Это было сделано человеком и машиносчитываемым, и в целом я думаю, что легче взглянуть и понять.

Есть ли какие-то шаблонные модули, которые работают больше:

<body>
  <h1>{title}</h1>
  <p>{content}</p>
</body>

Используя ту же концепцию Джейд, как:

res.render('index', {
  title:pageTitle,
  content:pageContent
});

Ответ 1

Что-то, что особенно похоже на это, вероятно, будет Усы для Node.js. Проверьте demo.

Ответ 2

Взгляните на EJS. Позволяет использовать обычный HTML-код и вставлять Javascript-код.

Например:

<div>
<% if (foo) { %>
foo
<% }else { %>
bar
<% } %>
</div>

Кроме того, то, что вы ищете, это "Экспресс-совместимый" механизм шаблонов, а EJS является Express-совместимым. Это сделал один из главных парней из Express.

Ответ 3

Вы можете использовать прямой HTML в Jade, попробуйте:

<body>
  <h1>#{title}</h1>
  <p>#{content}</p>
</body>

Ответ 4

Рассмотрим шаблоны jQuery. Вы можете предоставить свои данные в JSON и применить его к шаблону.

Ответ 5

Если вы уже используете underscore.js

var compiled = _.template("hello: <%= name %>");
compiled({name : 'moe'});
=> "hello: moe"

Ответ 6

Шаблоны могут быть только вопросом вкуса. Мне не нравится Джейд, и предпочтение HTML - лучший вариант. В большинстве случаев макеты веб-дизайнов не могут быть легко преобразованы в эти шаблоны.

образец предоставил усы:

<h1>{{header}}</h1>
{{#bug}}
{{/bug}}

{{#items}}
  {{#first}}
    <li><strong>{{name}}</strong></li>
  {{/first}}
  {{#link}}
    <li><a href="{{url}}">{{name}}</a></li>
  {{/link}}
{{/items}}

{{#empty}}
  <p>The list is empty.</p>
{{/empty}}

Он может быть смешан с синтаксисом Angular.js... может быть проблемой для людей, использующих его.

Ответ 7

Я рекомендую новый механизм шаблонов: Saker, он позволяет работать с документированием рабочей среды, в отличие от большинства синтаксисов шаблонов, вам не нужно прерывать кодирование, чтобы явно обозначать серверные блоки в вашем HTML.
Github: https://github.com/eshengsky/saker

Код выглядит так:

<body>
    <h1>@title</h1>
    <p>@content</p>
</body>