Есть ли механизм шаблонов для Node.js?

Я экспериментирую с созданием всего веб-приложения с помощью Node.js. Есть ли механизм шаблонов, похожий на (например) механизм шаблона Django или тому подобное, который по крайней мере позволяет расширять базовые шаблоны?

Ответы

Ответ 1

Просмотрите страницу wiki wiki Node js. Они перечислили все механизмы шаблонов, поддерживающие node.js.

Ответ 2

Вы должны иметь возможность использовать mustache.js, если он не работает, отправьте мне проблемы, и я исправлю это, потому что я собираюсь использовать их в node.js в любом случае.

http://github.com/janl/mustache.js

Я знаю, что он работает без DOM, потому что куча автономных приложений CouchDB использует его на сервере просмотра Spidermonkey.

Ответ 3

Если вам нравится haml, но хотите что-то еще лучше проверить http://jade-lang.com для node, я написал haml.js: )

Ответ 4

Есть новые шаблоны шаблонов все время.

underscore.js добавляет много поддержки функционального программирования js и имеет шаблоны.

И только сегодня я услышал об этом: http://github.com/SamuraiJack/Shotenjin-Joosed

Ответ 5

Вы должны взглянуть на node-asyncEJS, который явно предназначен для учета асинхронного характера node.js. Он даже позволяет асинхронные кодовые блоки внутри шаблона.

Вот пример формы документации:

<html>
  <head>
    <% ctx.hello = "World";  %>
    <title><%= "Hello " + ctx.hello %></title>
  </head>
  <body>

    <h1><%? setTimeout(function () { res.print("Async Header"); res.finish(); }, 2000)  %></h1>
    <p><%? setTimeout(function () { res.print("Body"); res.finish(); }, 1000)  %></p>

  </body>
</html>

Ответ 6

Вы можете попробовать beardless (он вдохновлен сваркой/пластинами):

Например:

{ post:
  { title: "Next generation templating: Start shaving!"
  , text: "TL;DR You should really check out beardless!"
  , comments:
    [ {text: "Hey cool!"}
    , {text: "Really gotta check that out..."}  ]
  }
}

Ваш шаблон:

<h1 data-template="post.title"></h1>
<p data-template="post.text"></p>
<div>
  <div data-template="post.comments" class="comment">
    <p data-template="post.comments.text"></p>
  </div>
</div>

Вывод:

<h1>Next generation templating: Start shaving!</h1>
<p>TL;DR You should really check out beardless!</p>
<div>
  <div class="comment">
    <p>Hey cool!</p>
  </div>
  <div class="comment">
    <p>Really gotta check that out...</p>
  </div>
</div>

Ответ 7

Я проделал определенную работу над довольно полным портом языка шаблонов Django для Simon Willisons проект djangode (функции Utilities для node. js, которые занимают некоторые полезные понятия из Django).

Смотрите документацию здесь.

Ответ 9

Если вы ищете минималистский подход к шаблонам, вы можете проверить Шаблон JSON.

Более полнофункциональной альтернативой является EJS. Это немного больше похоже на то, что вы получите от Django.

Ваш пробег может отличаться для каждого из них - они предназначены для среды Javascript браузера, а не Node.js.

Ответ 10

ПРЕДУПРЕЖДЕНИЕ: JinJs больше не поддерживается. Он по-прежнему работает, но не совместим с последней версией выражения.

Вы можете попробовать использовать jinjs. Это порт Jinja, очень хорошая система шаблонов Python. Вы можете установить его с помощью npm следующим образом:

npm install jinjs

в template.tpl:

I say : "{{ sentence }}"

в файле template.js:

jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);

Выход будет:

I say : "Hello, World!"

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

Ответ 13

Шаблоны Google Closure - это система шаблонов изначально-JavaScript и, по-видимому, естественная совместимость с NodeJS. Вот некоторые инструкции для их интеграции.

Ответ 14

haml - хороший выбор для node.js

http://github.com/creationix/haml-js

Haml-JS

!!! XML
!!! strict
%html{ xmlns: "http://www.w3.org/1999/xhtml" }
  %head
    %title Sample haml template
  %body
    .profile
      .left.column
        #date= print_date()
        #address= current_user.address
      .right.column
        #email= current_user.email
        #bio= current_user.bio

HTML

<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Sample haml template
</title></head><body><div class="profile"><div class="left column"><div id="date">January 1, 2009
</div><div id="address">Richardson, TX
</div></div><div class="right column"><div id="email">[email protected]
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>

Ответ 15

Вы попробовали PURE?
Если вы попробуете, не стесняйтесь публиковать любые проблемы, с которыми вы можете столкнуться на форуме .

В то время, когда он был специально разработан для браузера, он хорошо работает с Jaxer и Rhino.

Я еще не знаю node.js, но если вы можете кэшировать некоторые JS и функции в памяти, скорость должна быть еще более впечатляющей.

Ответ 16

В JavaScript используется порт механизма шаблонов Django. Однако его не обновляли в течение длительного времени, но он все еще может иметь достаточно возможностей.

http://code.google.com/p/jtl-javascript-template/

Ответ 17

Попробуйте Yajet.;-) Это новый, который я только что выпустил вчера, но я использую его какое-то время, и он стабилен и быстр (шаблоны скомпилированы для собственной JS-функции).

У ИМО есть лучший синтаксис для механизма шаблонов и богатый набор функций, несмотря на его небольшой размер кода (8.5K). Он имеет директивы, которые позволяют вводить условные обозначения, перебирать массивы/хэши, определять повторно используемые компоненты шаблонов и т.д.

Ответ 18

Я нашел hogan.js из Twitter и рекомендовал Тим О'Рейли на своем сайте. У меня нет лучшей практики, но я доверяю Twitter и O'Reilly. Вы должны попробовать...

Ответ 20

Честно говоря, лучший и самый простой механизм шаблонов для Node.js - это (IMHO) Plates (https://github.com/flatiron/plates). Вы также можете проверить фреймворк Flatiron MVC для Node.js(http://flatiron.org).

Ответ 21

Вы можете использовать dojox.dtl of DojoToolkit.org. Обратите внимание, что dojo 1.7 может работать на NodeJS и выполнять роль серверной библиотеки. Если вам интересно, я могу привести простой пример.