Existe um mecanismo de modelo para o Node.js? [fechadas]
271
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?
Acabei de descobrir que o mecanismo JavaScript V8 é mais rápido que Ruby, PHP e Python. Surpreendentemente rápido para uma linguagem dinâmica. Mais lento que Java e C #, no entanto.
Nosredna
77
@Nosredna: Como o Java pode ser mais rápido do que qualquer coisa ?! ;)
Daniel Sloof
27
@Daniel Java é realmente muito rápido hoje em dia, superando tudo, exceto Ada, C e C ++ nos benchmarks Shootout do Debian.
Mentalikryst
20
Qualquer um que não se preocupa com a sintaxe, a produtividade e qualquer outra coisa, mas o desempenho, deve estar usando Raphters (framework web para C)
Pablo B.
6
O node.js não é sobre o idioma. É totalmente sobre o design e a maneira como o js lida com o IO, o que é brilhante. Você pode fazer com que as estruturas da web ruby sejam executadas rapidamente, se você redesenhar as bibliotecas de IO.
precisa saber é
Respostas:
166
Confira a página da wiki Node js modules. Eles listaram todos os mecanismos de modelos que suportam o node.js.
@ThomasPotaire Tornou-se obsoleto porque eles sugerem o uso da pesquisa npm.
jun3
52
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.
Jade é bem legal. Eu apenas comecei a usá-lo, então não posso falar com o desempenho, mas eu gosto da sintaxe. E o suporte embutido no Express é uma vantagem.
broofa
3
o desempenho é suficiente, os modelos devem ser armazenados em cache de qualquer maneira. Além disso, lembre-se de escalar horizontalmente, não verticalmente, caso contrário, você pode muito bem não usar um modelo de motor em tudo e apenas algumas funções / concats
tjholowaychuk
14
Existem novos motores de modelos o tempo todo.
O underscore.js adiciona muito suporte de programação funcional ao js e possui modelos.
Polegares para cima para underscore.js. Biblioteca incrível, eu a uso tanto para o lado do cliente quanto para o trabalho do node.js. Seu mecanismo de modelagem é baseado no mecanismo JS Micro Templating de John Resig ( ejohn.org/blog/javascript-micro-templating ) que eu já usei várias vezes antes. Afaik é sua melhor opção neste momento ao trabalhar com o node.js.
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.
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..."}]}}
<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>
Seja mais descritivo na sua resposta sobre o seu código e o link ao qual você se referiu. Consulte: Como responder
askmish
Seria interessante, como realmente processar as variáveis de arquivo ou Preencher dentro Node
Julian F. Weinert
6
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).
Não é semelhante aos modelos do Django, pois os modelos do Django têm boa documentação. O EJS é uma luta difícil e você acabará lendo o código-fonte apenas para entender o que está disponível para você.
5
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:
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.
O Node.js não entende o DOM ... O PURE usa o DOM, mas como ele faz as strings dele. Isso é interessante para investigar. Desculpe pelo barulho.
560 Mic
2
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.
Mishoo interessante, bom trabalho. Tem alguma vantagem sobre o EJS?
trusktr
0
Encontrei hogan.js no Twitter e recomendei por Tim O'Reilly em seu site. Não tenho boas práticas, mas confio no Twitter e na O'Reilly. Você deveria tentar...
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 ).
Você pode usar dojox.dtl do DojoToolkit.org. Observe que o dojo 1.7 pode ser executado no NodeJS e funcionar como uma biblioteca do lado do servidor. Se você estiver interessado, posso dar um exemplo simples.
Respostas:
Confira a página da wiki Node js modules. Eles listaram todos os mecanismos de modelos que suportam o node.js.
fonte
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.
fonte
Se você gosta de haml, mas quer algo ainda melhor, confira http://jade-lang.com para o nó, escrevi haml.js também :)
fonte
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
fonte
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:
fonte
Você pode tentar sem barba (inspirado em soldas / chapas):
Por exemplo:
Seu modelo:
Resultado:
fonte
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 .
fonte
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.
fonte
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.
fonte
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:
em template.tpl:
no seu template.js:
A saída será:
Estamos desenvolvendo ativamente, uma boa documentação deve vir em breve.
fonte
haml é uma boa escolha para o node.js
http://github.com/creationix/haml-js
haml-js
html
fonte
Eu ouvi coisas boas sobre {dust} http://akdubya.github.com/dustjs/#dust
fonte
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
fonte
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.
fonte
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.
fonte
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.
http://code.google.com/p/jtl-javascript-template/
fonte
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.
fonte
Encontrei hogan.js no Twitter e recomendei por Tim O'Reilly em seu site. Não tenho boas práticas, mas confio no Twitter e na O'Reilly. Você deveria tentar...
fonte
Aqui está uma boa avaliação de vários mecanismos http://engineering.linkedin.com/frontend/client-side-templating-throwdown-mustache-handlebars-dustjs-and-more
fonte
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 ).
fonte
Você pode usar dojox.dtl do DojoToolkit.org. Observe que o dojo 1.7 pode ser executado no NodeJS e funcionar como uma biblioteca do lado do servidor. Se você estiver interessado, posso dar um exemplo simples.
fonte