25

私はdjango/jinja2テンプレート言語が本当に好きです。それらの構文は非常に単純ですが、それでも非常に用途が広いです。javascriptの構文と機能の両方、または両方ではないにしても、少なくとも機能に類似したものはありますか?

アンダースコア、jqueryテンプレート、口ひげテンプレートを調べましたが、どれも私が探しているものではないようでした。

その他の注意事項

私は(私が見た)すべてのライブラリの中で口ひげが最高だと思いますが、構文はあまり好きではありません。たとえば、この口ひげテンプレート

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

djangoのテンプレートとの比較:

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

フィルタを適用する場合も同じです。例えば:

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

vs

{{ value|filter }}

django / jinja2のアプローチはよりクリーンで、より自然に感じられると思います。

それで、django / jinjaに非常に似たテンプレートを実行するjsライブラリはありますか?そうでない場合は、muschache(または他の優れたjsライブラリ-提案を受け入れる)と一緒に暮らす必要があると思いますが、それは正しくないと感じています。

ありがとうございました。

4

8 に答える 8

18

Jinja2に大きく影響を受けたJSテンプレートエンジンであるNunjucksをご覧ください。ブロックの継承、マクロ、フィルターなどをサポートし、サーバー(NodeJS)とクライアント側(ほとんどのブラウザー)の両方で機能します。

于 2014-04-03T20:55:42.773 に答える
7

私のJavaScriptJinjaの実装はここにあります: https ://github.com/sstur/jinja

JinjaとLiquidの両方の構文をサポートし、ブラウザーとNodeで実行され、依存関係のないJavaScriptにテンプレートをコンパイルし、約3Kでgzip圧縮されます。

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

テストが含まれています。Express.jsのサポートが進行中です。

于 2013-02-10T15:02:03.380 に答える
4

@pradeekのコメントからのリンク。jinjaからjsへの移植です。

https://github.com/ericclemmons/jinja.js

于 2012-08-12T04:47:19.017 に答える
4

編集:もう維持されていません

Swigは、node.jsとブラウザー用の素晴らしいDjango/Jinjaのようなテンプレートエンジンです。

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

カスタムタグを追加して、さまざまなタイプのテンプレート構文を実現できます。

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

補足:Djangorequest.is_ajax()を使用して、レンダリングされていないDjangoテンプレートを条件付きで送り返し、Swigを使用してJSONオブジェクトでレンダリングすることができます。

于 2013-12-26T22:43:41.797 に答える
2

djangoのテンプレート言語との互換性を目的としたjavascriptテンプレートライブラリ

于 2012-11-13T08:51:16.243 に答える
1

これは非常に新しいものです:angularjs http://googledevelopers.blogspot.nl/2012/06/better-web-templating-with-angularjs-10.html

于 2012-07-13T17:24:54.160 に答える
0

twig.jsも非常に面白く見え、プレートよりも軽量です https://github.com/justjohn/twig.js

于 2013-02-13T14:19:57.473 に答える
0

私はPythonでJinja2を使用しましたが、現在はNode.jsプラットフォームの別のプロジェクトでjinjsを使用しています。

https://github.com/ravelsoft/node-jinjs

于 2013-10-30T04:25:30.040 に答える