Estou experimentando a construção de um aplicativo Web inteiro usando o Node.js. Existe um mecanismo de modelo semelhante ao (por exemplo) o mecanismo de modelo do Django ou algo semelhante que pelo menos permita que você estenda os modelos de base?
Estou experimentando a construção de um aplicativo Web inteiro usando o Node.js. Existe um mecanismo de modelo semelhante ao (por exemplo) o mecanismo de modelo do Django ou algo semelhante que pelo menos permita que você estenda os modelos de base?
Respostas:
Confira a página da wiki Node js modules. Eles listaram todos os mecanismos de modelos que suportam o node.js.
Você deve poder usar o mustache.js, se não funcionar, envie-me os problemas e eu o corrigirei, porque estou prestes a usá-los no node.js de qualquer maneira.
http://github.com/janl/mustache.js
Eu sei que ele funciona sem um DOM, porque vários aplicativos independentes do CouchDB estão usando-o em um servidor de exibição Spidermonkey.
Se você gosta de haml, mas quer algo ainda melhor, confira http://jade-lang.com para o nó, escrevi haml.js também :)
Existem novos motores de modelos o tempo todo.
O underscore.js adiciona muito suporte de programação funcional ao js e possui modelos.
E só hoje ouvi falar sobre isso: http://github.com/SamuraiJack/Shotenjin-Joosed
Você deve dar uma olhada no node-asyncEJS , que foi projetado explicitamente para levar em conta a natureza assíncrona do node.js. Ele ainda permite blocos de códigos assíncronos dentro do modelo.
Aqui está um exemplo da documentação:
<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>
Você pode tentar sem barba (inspirado em soldas / chapas):
Por exemplo:
{ 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..."} ]
}
}
Seu modelo:
<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>
Resultado:
<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>
Eu fiz algum trabalho em uma porta bastante completa da linguagem de modelo do Django para o projeto djangode do Simon Willisons (funções de utilitários para o node.js que emprestam alguns conceitos úteis do Django).
Veja a documentação aqui .
Eu uso o Twig com Symfony e agora estou mexendo no node.js, então estou vendo https://github.com/justjohn/twig.js e https://github.com/paularmstrong/swig , que você encontrará provavelmente como se você usar django.
Se você estiver procurando uma abordagem minimalista dos modelos, consulte o JSON Template .
Uma alternativa mais completa é EJS . É um pouco mais parecido com algo que você obteria do Django.
Sua milhagem pode variar para cada um deles - eles foram projetados para um ambiente Javascript do navegador, e não para o Node.js.
AVISO: JinJs não é mais mantido. Ainda está funcionando, mas não é compatível com a versão mais recente do express.
Você pode tentar usar jinjs . É um porto do Jinja, um sistema de templates Python muito bom. Você pode instalá-lo com o npm assim:
npm install jinjs
em template.tpl:
I say : "{{ sentence }}"
no seu template.js:
jinjs = require('jinjs');
jinjs.registerExtension('.tpl');
tpl = require('./template');
str = tpl.render ({sentence : 'Hello, World!'});
console.log(str);
A saída será:
I say : "Hello, World!"
Estamos desenvolvendo ativamente, uma boa documentação deve vir em breve.
haml é uma boa escolha para o 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>
Eu ouvi coisas boas sobre {dust} http://akdubya.github.com/dustjs/#dust
Tente "vash" - asp.net mvc como sintaxe de barbear para node.js
https://github.com/kirbysayshi/Vash
Também faça o checkout: 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);
O Google Closure Templates é um sistema de templates nativo em JavaScript e um ajuste aparentemente natural ao NodeJS. Aqui estão algumas instruções para integrá-los.
Você tentou o PURE ?
Se você tentar, sinta-se à vontade para postar qualquer problema que possa encontrar no fórum
Embora tenha sido projetado principalmente para o navegador, funciona bem com o Jaxer e o Rhino.
Ainda não conheço o node.js, mas se você pode armazenar em cache algumas JS e funções na memória, a velocidade deve ser ainda mais impressionante.
Há uma porta do mecanismo de modelagem do Django para JavaScript. No entanto, ele não é atualizado há muito tempo, mas ainda pode ter recursos suficientes.
Experimente o Yajet também. ;-) É um novo que acabei de lançar ontem, mas estou usando-o há um tempo e é estável e rápido (os modelos são compilados para uma função JS nativa).
Ele possui a melhor sintaxe possível para um mecanismo de modelo, e um rico conjunto de recursos, apesar de seu pequeno tamanho de código (8,5 mil minificado). Possui diretivas que permitem introduzir condicionais, iterar matrizes / hashes, definir componentes de modelo reutilizáveis etc.
Aqui está uma boa avaliação de vários mecanismos http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
Honestamente, o melhor e mais simples mecanismo de modelo para o Node.js é o (IMHO) Plates ( https://github.com/flatiron/plates ). Você também pode verificar a estrutura do Flatiron MVC para Node.js ( http://flatiron.org ).