2012-04-08 26 views
1

現在、Node.jsのExpressフレームワークで作業しており、ページ(ルート)ごとにスタイルシートとjavascriptファイルを含むことに問題があります。上記Express(Node.js) - 条件付きでCSSとJSファイルを含める

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:私は、次の内容のファイルindex.js/ルートとデフォルトExpressのセットアップを使用していますlayout.jadeは期待通りです。ただし、インデックスルートに必要なアセット(CSSおよびJSファイル)は、ブラウズルートに必要なものと同じではありません。必要なアセットを含むlayout.jadeテンプレートに配列を渡して単純にループさせることは可能ですか?

私は経由して上記の操作を行うことを試み

続くIndex.js(ルート)

​​

:しかし

Layout.jade

each js in scripts 
     script(src= js) 

、それは単に"scrと言うエラーを投げるiptsは定義されていません。 私はこの権利をしていないと確信しています。また、追加するだけで、私はここで別の同様のStackOverflowの質問に遭遇しました:Node.js with Express: Importing client-side javascript using script tags in Jade views? しかし、私はそこに示された方法に熱心ではありません(それは追加のヘルパーが必要です)。可能であれば、テンプレートエンジン自体が提供する機能に固執したいと思います。

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

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

答えて

2

このようなビューにスクリプトの配列を渡すようにしてください:

res.render('index', { title: 'Index Page Test', scripts: scripts}) 
+0

申し訳ありませんが、私は明らかにしていませんが、すでにその方法を試しましたが、「スクリプトが定義されていません」というエラーが表示されます。 – MrSaints

+1

あなたは明らかに何か間違っている必要があります:)私はこれを試して、それは私のために働いた – mihai

+0

エクスプレスのどのバージョンを使用していますか?また、あなたの例では、スクリプトはいくつかのオブジェクトのメンバーであるようです。あなたは完全なコードを投稿できますか? – mihai

2

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

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

+0

恐ろしいです!それは今働く。私は別のルートで "スクリプト"配列を変更する方法はありますか? – MrSaints

+1

スーパーバイザのようなものを使用して、ノードアプリケーションを自動的に再起動します。 – Exploit

+0

動的ヘルパーは、明示的に3になりました:https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x – Petrogad

関連する問題