0

ノードで Nunjucks を使用する

次の問題に対する適切な解決策を見つけようとしています。次のようなディレクトリツリーソーダを使用します。 app_dir --app.js --public ----stylesheets ------mystyles.css --views ----page.html ----templates ------page_template.html

  1. パブリック ディレクトリ内に CSS などの静的ファイルを配置する app.use(express.static(path.join(__dirname, 'public')));
  2. Nunjucks のルート ディレクトリをビューとして構成する nunjucks.configure('views', { autoescape: true, express : app, watch: true });

  3. page_template.html 内から css ファイルを参照しているとき、nunjucks (私が思うに) は自動的にルートに基づいて相対パスを作成し、静的な動作をオーバーライドします。

たとえば、/stylesheets/mystyles.csspage_template.html でパスを使用し、パスを使用してそれを拡張するファイルを呼び出すと /:publication/:page、レンダリングされた html は 次のようになります。/:publication/:page/stylesheets/mystyle.css

ルートに基づいてCSSやその他のリソースへの相対パスを作成する簡単なハックをいつでも書くことができますが、それは特に優雅な解決策のようには感じません:(どんな助けも大歓迎です.

4

1 に答える 1

2

page_template.html 内から css ファイルを参照しているとき、nunjucks (私が思うに) は自動的にルートに基づいて相対パスを作成し、静的な動作をオーバーライドします。

間違いだと思います。ナンジャックはパスを生成しません。任意のフォルダー ( 、など) の
テンプレートでは、ルートで あることを考慮してファイル名を指定する必要があります。viewview/templatespublic dir/stylesheets/mystyles.css%app%/public/stylesheets/mystyles.css

viewテンプレートをグループ化するためにサブフォルダーを使用します。たとえば/macros、(保存されたマクロ)、/tools(アプリの追加ページを保存)。/user/view.htmlまた、ルーターに使用することもできますuser/add.html

于 2016-07-24T08:19:57.957 に答える