2012-02-27 7 views
26

のために「ビュー」フォルダを検索する場所をオーバーライド:ノード/ Express.js - 私は景色がとても似グローバルフォルダを設定することができ、私のノード/ Express.jsプロジェクトでは、各要求

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    .... snip .... 
}); 

...すべてのビューテンプレートはviewsフォルダに移動します。

Expressベースのリクエストでリクエストを表示する場所を変更することはできますか?例えばは、次のようなもの:

app.get('/', function(req, res) { 
    res.render('index', { viewFolder: 'otherViews' }); 
}); 

私が尋ねる理由は、私は、各エリアにはそれ自身の見解フォルダを取得するマイクロソフトASP.NET MVCのエリアの機能を再現しようとしています。

+0

に動作しますか?その領域はビューフォルダのサブフォルダである必要はありませんか? –

答えて

22

の見解 'の設定がルートディレクトリであるので、あなたは、階層内のサブフォルダを指定することができるはずです。

app.get('/', function(req, res) { 
    res.render('areaName/viewName'); 
}); 

それはサブフォルダなるようにあなたの「領域」の必要性を意味するが、それはあなたが探している分離を達成することができます。

6

もっとモジュール化されたソリューションとして、私はsails.jsでこれをしました。 ミドルウェア内の特定のリクエストのレンダリング機能をオーバーライドするだけです。 :)

var curRender = res.render; 
res.render = function(path, locals, func) { 
    var args = [res.locals.explicitPath + '/' + path, locals, func]; 
    curRender.apply(this, args); 
}; 
0

フルパスはあなたが受け入れ答えに、より良い解決策を見つけたハイテクすぎ

app.get('/', function(req, res) { 
    res.render(path.join(__dirname, 'view.jade')); 
}); 
関連する問題