1

現在、Node.js の Express フレームワークを使用していますが、ページ (ルート) ごとにスタイルシートと JavaScript ファイルを含めるのに問題があります。次の内容のroutes/index.jsファイルを使用して、デフォルトの Express セットアップを使用しています。

exports.index = function(req, res){
    res.render('index', { title: 'Index Page Test' })
};
exports.browse = function(req, res){
  res.render('browse', { title: 'Browse Page Test' })
};

上記のルートは正常に機能し、index.jade と browse.jade を layout.jade の「本体」に期待どおりにロードします。ただし、index ルートが必要とするアセット (CSS および JS ファイル) は、browse ルートが必要とするものと同じではありません。必要なアセットを含む layout.jade テンプレートに配列を渡して、単純にループさせることはできますか?

私は上記のことを次の方法で実行しようとしました:

Index.js (ルート)

scripts: [
   'javascripts/jquery.js',
   'javascripts/easel.js',
   'javascripts/script.js'
]

に続く:

Layout.jade

    each js in scripts
        script(src= js)

ただし、 「スクリプトが定義されていません」というエラーがスローされるだけです。 私はこれを正しく行っていないと確信しています。また、追加するために、ここで別の同様の StackOverflow の質問に出くわしました: Node.js with Express: Importing client-side javascript using script tags in Jade views? しかし、そこに示されている方法にはあまり熱心ではありません (追加のヘルパーが必要です)。できれば、テンプレートエンジン自体が提供する機能にこだわりたい。

ありがとう。

編集:それが役立つ場合、私はこれに似た何かを達成しようとしています: http://kerkness.ca/kowiki/doku.php?id=template-site:create_the_template

4

2 に答える 2

2

dynamicHelpersを使用してみてください。

これは、jadeテンプレートのローカル変数としてスクリプトとして使用できるようになります。

app.dynamicHelpers({
  scripts: function(req, res){
    return ['javascripts/jquery.js', 'javascripts/easel.js','javascripts/script.js'];
  }
});
于 2012-04-08T23:48:35.853 に答える
2

次のようにスクリプト配列をビューに渡してみてください。

res.render('index', { title: 'Index Page Test', scripts: scripts})
于 2012-04-08T19:46:51.843 に答える