19

Ich mag Django/Jinja2 Templating Sprachen. Ihre Syntax ist extrem einfach und dennoch sehr vielseitig. Gibt es etwas ähnliches in Syntax und Fähigkeit in Javascript, oder wenn nicht beide, zumindest in der Fähigkeit.Jinja-like JS Templating Sprache

Ich schaute Unterstreichung, Jquery Vorlagen und Schnurrbart-Vorlagen, und keiner von ihnen schien, was ich suche.

Zusätzliche Hinweise

Ich denke, aus allen Libs (ich sah) Schnurrbart ist die beste, aber ich weiß nicht wirklich wie die Syntax. Zum Beispiel dieses Schnurrbart Vorlage

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

im Vergleich zu Djangos Vorlagen:

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

Auch das Gleiche für Filter anwenden. Zum Beispiel:

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

vs

{{ value|filter }} 

denke ich django/jinja2 Ansatz mehr sauber und fühlt sich einfach natürlicher.

Also, gibt es eine js-Bibliothek, die Vorlagen sehr ähnlich zu django/jinja tut? Wenn nicht, denke ich, dass ich mit muschache leben muss (oder vielleicht mit einer anderen guten js-Bibliothek - ich bin offen für Suggestionen), aber es fühlt sich einfach nicht richtig an.

Vielen Dank.

+0

Welche Funktionen fehlen im Schnurrbart? – pradeek

+0

siehe zusätzliche Hinweise – miki725

+2

Es gibt einen [JavaScript-Port für Jinja] (https://github.com/ericclemmons/jinja.js), aber ich habe es noch nicht persönlich ausprobiert. – pradeek

Antwort

2

eine Javascript-Template-Bibliothek, das Ziel, mit Template-Sprache Djangos kompatibel

Plate

5

Mein JavaScript Jinja Implementierung finden Sie hier: https://github.com/sstur/jinja

Es unterstützt beide Jinja und Liquid-Syntax, läuft im Browser und in Knoten, werden Vorlagen zusammenstellen, um Abhängigkeitsfrei JavaScript und ist etwa 3K gzipped

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

Tests enthalten. Express.js Unterstützung im Gange ..

3

Swig ist eine wunderbare, Django/Jinja artige Template-Engine für node.js und den Browser.

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

Sie benutzerdefinierte Tags hinzufügen können verschiedene Arten von Vorlagensyntax zu erreichen:

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

Side-Hinweis: Sie können request.is_ajax() der Django bedingt eine nicht gerendert Django Vorlage und verwenden Swig zurücksenden an Rendern Sie es mit einem JSON-Objekt.

+1

ich zweitens, vor allem wegen der Express-Kompatibilität! – DandyDev

12

Werfen Sie einen Blick auf Nunjucks, eine JS Templating-Engine stark von Jinja2 inspiriert. Es unterstützt Block Vererbung, Makros, Filter und vieles mehr und funktioniert sowohl Server (NodeJS) und Client-Seite (die meisten Browser).

+4

Für alle anderen, die so spät zur Party sind wie ich, ist Nunjucks das einzige hier aufgelistete Projekt, das noch Aktivität auf GitHub hat. Es wird von Mozilla betrieben, also wird es wahrscheinlich nicht so schnell wieder verschwinden ... –

+0

Nunjucks wird nicht mehr gepflegt – felipecrp

+0

@felipecrp Nunjucks wird definitiv immer noch gepflegt. Commits, PRs, viel Aktivität https://github.com/mozilla/nunjucks – KayakinKoder