Есть ли шаблонный движок для Node.js?

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

21 ответ

Посетите вики-страницу Node js modules. Они перечислили все движки шаблонов, поддерживающие node.js.

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

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

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

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

Все время появляются новые шаблоны.

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

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

Вы должны взглянуть на 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>

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

Например:

{ 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>

Я использую Twig с Symfony и теперь играю в node.js, поэтому я смотрю на https://github.com/justjohn/twig.js и https://github.com/paularmstrong/swig, которые вы вероятно, нравится, если вы используете Django.

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

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

ВНИМАНИЕ: JinJs больше не поддерживается. Он все еще работает, но не совместим с последней версией Express.

Вы можете попробовать использовать 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!"

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

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

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

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

Попробуйте "vash" - asp.net mvc как синтаксис бритвы для node.js

https://github.com/kirbysayshi/Vash

также оформить заказ: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx


// sample
var tmpl = vash.compile('<hr/>@model.a,@model.b<hr/>');
var html = tmpl({"a": "hello", "b": "world"});
res.write(html);

Я слышал хорошие вещи о {пыли} http://akdubya.github.com/dustjs/

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">tim@creationix.com
</div><div id="bio">Experienced software professional...
</div></div></div></body></html>

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

Существует порт движка шаблонов Django для JavaScript. Тем не менее, он не обновлялся в течение длительного времени, но он все еще может иметь достаточно функций.

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

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

Хотя он был изначально разработан для браузера, он хорошо работает с Jaxer и Rhino.

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

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

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

Я нашел hogan.js в Твиттере и рекомендовал Тим О'Рейли на его сайте. У меня нет лучшей практики с этим, но я доверяю в Твиттере и О'Рейли. Тебе стоит попробовать...

Вот хорошая оценка нескольких двигателей: http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more

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

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

Другие вопросы по тегам