Eksperymentuję z budowaniem całej aplikacji internetowej za pomocą Node.js. Czy istnieje silnik szablonów podobny do (na przykład) silnika szablonów Django lub podobny, który pozwala przynajmniej rozszerzyć szablony podstawowe?
Eksperymentuję z budowaniem całej aplikacji internetowej za pomocą Node.js. Czy istnieje silnik szablonów podobny do (na przykład) silnika szablonów Django lub podobny, który pozwala przynajmniej rozszerzyć szablony podstawowe?
Odpowiedzi:
Sprawdź stronę wiki modułów Node js. Wymienili wszystkie silniki szablonów obsługujące node.js.
Powinieneś być w stanie używać mustache.js, jeśli to nie zadziała, wyślij mi problemy, a ja to naprawię, bo i tak zamierzam ich użyć w node.js.
http://github.com/janl/mustache.js
Wiem, że działa bez DOM, ponieważ wiele samodzielnych aplikacji CouchDB używa go na serwerze przeglądania Spidermonkey.
Jeśli lubisz Haml, ale chcesz czegoś jeszcze lepiej, sprawdź http://jade-lang.com dla węzła, napisałem również haml.js :)
Cały czas pojawiają się nowe silniki szablonów.
underscore.js dodaje do js wiele funkcji programowania funkcjonalnego i ma szablony.
I właśnie dziś słyszałem o tym: http://github.com/SamuraiJack/Shotenjin-Joosed
Powinieneś spojrzeć na node-asyncEJS , który został wyraźnie zaprojektowany, aby uwzględnić asynchroniczną naturę node.js. Pozwala nawet na blokowanie kodu asynchronicznego wewnątrz szablonu.
Oto przykład z dokumentacji:
<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>
Możesz spróbować bez brody (jest inspirowany spoiną / płytami):
Na przykład:
{ 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..."} ]
}
}
Twój szablon:
<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>
Wynik:
<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>
Zrobiłem trochę pracy nad całkiem kompletnym portem języka szablonów Django dla projektu djangode Simona Willisonsa (funkcje narzędziowe dla node.js, które pożyczają kilka użytecznych pojęć od Django).
Zobacz dokumentację tutaj .
Używam Twig z Symfony i teraz zajmuję się w node.js, więc patrzę na https://github.com/justjohn/twig.js i https://github.com/paularmstrong/swig , które będziesz prawdopodobnie jak jeśli używasz django.
Jeśli szukasz minimalistycznego podejścia do szablonów, możesz sprawdzić Szablon JSON .
Bardziej wszechstronną alternatywą jest EJS . Jest to trochę bardziej podobne do czegoś, co można uzyskać od Django.
Twój przebieg może być różny dla każdego z nich - są one zaprojektowane dla środowiska Javascript w przeglądarce, a nie Node.js.
OSTRZEŻENIE: JinJs nie jest już utrzymywany. Nadal działa, ale nie jest kompatybilny z najnowszą wersją express.
Możesz spróbować użyć ninja . Jest to port Jinja, bardzo dobrego systemu szablonów Python. Możesz zainstalować go za pomocą npm:
npm install jinjs
w template.tpl:
I say : "{{ sentence }}"
w pliku template.js:
jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
Dane wyjściowe będą:
I say : "Hello, World!"
Aktywnie go rozwijamy, dobra dokumentacja powinna pojawić się wkrótce.
haml jest dobrym wyborem dla 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>
Słyszałem dobre rzeczy o {dust} http://akdubya.github.com/dustjs/#dust
Wypróbuj „vash” - asp.net mvc jak składnia razor dla node.js
https://github.com/kirbysayshi/Vash
również kasa: 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);
Szablony zamykania Google to natywny system szablonów JavaScript i pozornie naturalne dopasowanie do NodeJS. Oto kilka instrukcji ich integracji.
Czy próbowałeś CZYSTEGO ?
Jeśli spróbujesz, możesz opublikować wszelkie problemy, jakie możesz napotkać na stronie forum
Chociaż został pierwotnie zaprojektowany dla przeglądarki, działa dobrze z Jaxerem i Rhino.
Nie znam jeszcze node.js, ale jeśli potrafisz buforować niektóre JS i funkcje w pamięci, prędkość powinna być jeszcze bardziej imponująca.
Istnieje port silnika szablonów Django do JavaScript. Jednak nie był aktualizowany przez długi czas, ale wciąż może mieć wystarczającą liczbę funkcji.
Spróbuj też Yajeta . ;-) Jest to nowy, który właśnie wydałem wczoraj, ale teraz go używam i jest stabilny i szybki (szablony są kompilowane do natywnej funkcji JS).
Ma IMO najlepszą możliwą składnię dla silnika szablonów i bogaty zestaw funkcji, pomimo niewielkiego rozmiaru kodu (zmniejszonego o 8,5 KB). Ma dyrektywy, które pozwalają wprowadzać warunki, iterować tablice / skróty, definiować komponenty szablonu wielokrotnego użytku itp.
Oto dobra ocena kilku silników http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Szczerze mówiąc, najlepszy i najprostszy silnik szablonów dla Node.js to (IMHO) Plates ( https://github.com/flatiron/plates ). Możesz także sprawdzić platformę Flatiron MVC dla Node.js ( http://flatiron.org ).