問題タブ [nunjucks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
17794 参照

javascript - Nunjucks テンプレートを使用した整数値によるループ

私はヌンジャックにはまったく慣れていないので、読んだ限りではこれは不可能ですが、誰かがこれを行う方法を思いついたのではないかと思っていました.

私は基本的に、オブジェクトのサイズではなく値に基づいて、nunjucks テンプレートで for ループを実行しようとしています。

次のデータをテンプレートに渡すとします。部屋数の値が、<select>要素から選択されたオプションの値であると仮定します。

numberOfRooms従来の JS では、for ループを記述し、値に基づいてループを制限することができました。

私の最終的な目標は、マークアップのブロックを X 回 (X は numberOfRooms の値) 複製するループを Nunjucks テンプレートに記述することです。

では、これが可能である場合、Nunjucks でどのようにこれを達成するのでしょうか? これが Nunjucks の目的を完全に無効にする場合は、その旨を伝えてください。代替案があれば大歓迎です。

0 投票する
1 に答える
2293 参照

javascript - nunjucks 関数の引数が未定義で到着する

私は数か月間 nunjucks を使用しており、優れたテンプレート エンジンであることがわかりました。しかし、今朝、単純に見える問題に遭遇しましたが、それを理解することはできません。別の目が解決策を示すのに役立つことを願っています.

問題: テンプレートに関数を渡すと、その関数に渡された引数は関数本体内で定義されていません。

値とオブジェクトは問題なくテンプレートに渡すことができます。関数を渡すと、関数内からコンソールにログを記録できます (関数自体がそこにあることがわかります) が、引数はすべて未定義です。

これは最初はクロージャーで解決できるもののように思えましたが、1) 私が見つけたどの例にもクロージャーが見られず、2) クロージャーを試したところ、それらも未定義の引数を受け取ることがわかりました。

一日を通して、コードを可能な限り単純なケースに戻しましたが、まだこれを理解できません。

テンプレート:

テンプレートをレンダリングするコード (これは、requirejs 定義内にありますが、表示されていません):

レンダリングされた HTML は次のようになります。

したがって、値は問題ありません。オブジェクトも同様に機能し、「きれいな」フィルターを通過した後も見栄えがします。

ただし、「func」に渡される値は関数本体で未定義になり、関数内で引数変数を使用しても役に立ちません。さらに、関数をテンプレート コンテキスト (ローカル) に直接渡すこともできません。

フィルター (基本的には単なる関数) は正常に機能しますが、通常の関数は、テンプレート コンテキストの一部として渡されるか、グローバルとして渡されるかに関係なく機能しません。

役立つかもしれないいくつかのメモ:

  • 私はrequirejsを使用していますが(nunjucks自体のインポートを除く)、方程式から排除しようとしました。

  • この例では、nunjucks v1.3.4 を使用しています。デバッグの過程で、v2.1 でこの動作を確認しようとしましたが、v2.x では requirejs の互換性が壊れている可能性があり、2 つの問題に並行して取り組みたくありませんでした。

  • grunt-nunjucks を使用してテンプレートをプリコンパイルし、結果を醜くしています。私の Gruntfile の関連部分は次のとおりです。

    /li>

テスト テンプレート (上に表示) は、common.js にコンパイルされ、上記の設定を使用して common.min.js に醜化されたいくつかのテンプレートの 1 つです。醜くすることなくテンプレートをコンパイルしようとしましたが、同じ結果が得られたことに注意してください。

これは非常に基本的な機能であるため、これがバグであるとすれば、SE やイシュー ログで多くの参照が見られると思いますが、ほとんど見つかりませんでした。本当に明白なものが欠けていると思いますが、それを見つけることができないようです。

何かご意見は?

0 投票する
0 に答える
2036 参照

koa - koa で共同ビューを持つ nunjucks ベース レイアウトを使用すると、テンプレートが見つからないというエラーが発生する

koa で基本的な nunjucks の例を実行しようとしていますが、基本テンプレートを参照すると、見つからないというエラーが発生します

Error: template not found: layout.html

index.html

レイアウト.html

render.js

サーバー.js

私が少し興味を持っているもう 1 つのことは、nunjucks ライブラリ リファレンスが渡される場所です。render.js に何らかの形で注入する必要がありますか?

0 投票する
3 に答える
5001 参照

javascript - nunjucksの異なるページのボディに変更クラスを追加するには?

複数のページを持つ静的な Web サイトに Mozilla Nunjucks テンプレート システムを使用しています。body何らかの目的で、異なるページごとにタグ付けするクラスを追加したい

私たちについてのページ ><body class="about">

ホーム ><body class="home">

すべてのページ内にタグを保持する場合、これを非常に簡単に行うことができますが、すべてのページに使用するテンプレート内にタグbodyを保持したいと考えています。body

条件付きでクラスチェンジしたい。

0 投票する
0 に答える
144 参照

node.js - Nunjucks CMS の非同期 DB 呼び出し

私のプロジェクトはもともとハンドルバーでセットアップされていましたが、非同期ロジックを実行できるため、Nunjucks に移行しています。ドキュメントを読んでいますが、これを行う方法が正確にはわかりません。私の理解が正しければ、Express のレンダリング エンジンを使用することはできず、代わりにカスタム テンプレート ローダーを自分で実装する必要があります。カスタム ヘルパーから db 呼び出しを実行し、取得したデータでテンプレートをレンダリングするにはどうすればよいでしょうか?