19

Me gustan mucho los lenguajes de creación de plantillas django/jinja2. Su sintaxis es extremadamente simple y, sin embargo, es muy versátil. ¿Hay algo similar a eso en la sintaxis y la capacidad en javascript, o si no ambos, al menos en la capacidad.Lenguaje de plantillas JS JS

Miré las plantillas de subrayado, jquery y bigote, y ninguna de ellas parecía ser lo que estaba buscando.

Notas adicionales

Creo que de todas las librerías (Miré) bigote es el mejor pero no me gusta mucho la sintaxis. Por ejemplo esta plantilla bigote

{{#people}} 
    {{name}} 
{{/people}} 
{{^people}} 
    No people :(
{{/people}} 

compara con las plantillas de Django:

{% for person in people %} 
    {{ person.name }} 
{% empty %} 
    No people :(
{% endfor %}` 

también lo mismo para la aplicación de filtros. Por ejemplo:

{{#filter}}{{value}}{{/filter}} 

vs

{{ value|filter }} 

Creo enfoque django/Jinja2 es más limpio y sólo se siente más natural.

Entonces, ¿hay alguna biblioteca js que haga plantillas muy similares a django/jinja? Si no, supongo que tengo que vivir con muschache (o tal vez con alguna otra biblioteca de good js, estoy abierto a sugerencias), pero simplemente no me siento bien.

Gracias.

+0

¿Qué características faltan en el bigote? – pradeek

+0

consulte las notas adicionales – miki725

+2

Hay un [puerto de JavaScript para Jinja] (https://github.com/ericclemmons/jinja.js) pero todavía no lo he probado personalmente. – pradeek

Respuesta

2

una biblioteca de plantillas javascript, destinado a ser compatible con el lenguaje de plantillas de Django

Plate

5

Mi implementación de JavaScript Jinja se puede encontrar aquí: https://github.com/sstur/jinja

Es compatible tanto Jinja y la sintaxis líquido, se ejecuta en el navegador y en el Nodo, compilará las plantillas a la dependencia de libre JavaScript, y se trata de 3K gzipped

http://sstur.com/jinja/demo/

Las pruebas incluyeron. Express.js apoyo en curso ..

3

Swig es un motor de plantillas impresionante, Django/Jinja-como para Node.js y el navegador.

<h1>{{ pagename|title }}</h1> 
<ul> 
{% for author in authors %} 
    <li{% if loop.first %} class="first"{% endif %}>{{ author }}</li> 
{% endfor %} 
</ul> 

Puede añadir etiquetas personalizadas para lograr diversos tipos de sintaxis de la plantilla:

{% filter %}{{value}}{% endfilter %} 
{% filter 'value' %} 
{{ value | filter }} 

lateral Nota: se puede utilizar de request.is_ajax() Django para enviar condicionalmente la espalda una plantilla de Django ONU-renderizados y utilizar trago a renderízalo con un objeto JSON.

+1

En segundo lugar, ¡especialmente por la compatibilidad de Express! – DandyDev

12

Eche un vistazo a Nunjucks, un motor de plantillas JS fuertemente inspirado en Jinja2. Admite herencia de bloques, macros, filtros y mucho más y funciona tanto en el servidor (NodeJS) como en el lado del cliente (la mayoría de los navegadores).

+4

Para cualquier otra persona que llegue tan tarde a la fiesta como yo, Nunjucks es el único proyecto enumerado aquí que todavía tiene actividad en github. Es administrado por Mozilla, por lo que probablemente no desaparecerá pronto ... –

+0

Nunjucks ya no se mantiene – felipecrp

+0

@felipecrp Nunjucks definitivamente se mantiene. Compromisos, relaciones públicas, mucha actividad https://github.com/mozilla/nunjucks – KayakinKoder