Я експериментую зі створенням цілого веб-додатку за допомогою Node.js. Чи існує двигун шаблонів, подібний (наприклад, до двигуна шаблонів Django) або подібний, який принаймні дозволяє розширити базові шаблони?
Я експериментую зі створенням цілого веб-додатку за допомогою Node.js. Чи існує двигун шаблонів, подібний (наприклад, до двигуна шаблонів Django) або подібний, який принаймні дозволяє розширити базові шаблони?
Відповіді:
Перегляньте сторінку вікі модулів Node js. Вони перерахували всі шаблонні двигуни, що підтримують 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 , які ви напевно, як, якщо ви використовуєте джанго.
Якщо ви шукаєте мінімалістичний підхід до шаблонів, ви можете перевірити шаблон JSON .
Більш повнофункціональна альтернатива - EJS . Це трохи більше схоже на те, що ви отримаєте від Джанго.
Ваш пробіг може відрізнятися для кожного з них - вони розроблені для середовища JavaScript браузера, а не Node.js.
Попередження: JinJs більше не підтримується. Він все ще працює, але не сумісний із найсвіжішою версією Express.
Ви можете спробувати використовувати jinjs . Це порт Джинджа, дуже гарна система шаблонів 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!"
Ми активно його розробляємо, хороша документація повинна надійти досить скоро.
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>
Я чула хороші речі про {dust} http://akdubya.github.com/dustjs/#dust
Спробуйте "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);
Шаблони закриття Google - це шаблонна система шаблонів JavaScript і, здавалося б, природна відповідність NodeJS. Ось кілька інструкцій щодо їх інтеграції.
Ви пробували PURE ?
Якщо ви спробуєте це, сміливо публікуйте будь-які проблеми, які можуть зіткнутися на форумі
Хоча він був розроблений в основному для браузера, він добре працює з Jaxer і Rhino.
Я ще не знаю node.js, але якщо ви можете кешувати деякі JS та функції в пам'яті, швидкість повинна бути ще більш вражаючою.
Існує порт двигуна шаблонів Django до JavaScript. Однак його не оновлювали тривалий час, але він все ще може мати достатньо функцій.
Спробуйте і Яджет . ;-) Це новий, який я щойно випустив вчора, але я його вже деякий час використовую, і він стабільний і швидкий (шаблони компілюються в нативну функцію JS).
У IMO є найкращий можливий синтаксис для двигуна шаблонів, а також багатий набір функцій, незважаючи на невеликий розмір коду (8,5 Кб). У ньому є директиви, які дозволяють вводити умовні умови, ітератувати масиви / хеші, визначати компоненти шаблону для багаторазового використання тощо.
Ось гарна оцінка кількох двигунів http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Чесно кажучи, найкращий і найпростіший двигун шаблонів для Node.js - пластини (IMHO) ( https://github.com/flatiron/plates ). Ви також можете перевірити рамку MVC Flatiron для Node.js ( http://flatiron.org ).