2012-12-22 15 views
8

Express.jsのres.render関数を拡張する方法があるかどうかを知りたいのですが、デフォルトの "localsレンダリングされるすべてのテンプレートに適用されます。現在、私はunderscore.js年代は、デフォルトの「地元」をマージする機能を拡張し、そのテンプレートに固有のもの使用しています小さなミドルウェアを書いた:Node.js - res.renderを拡張するExpressjsミドルウェア

app.use(function(req, res, next){ 
    res.render2 = function (view, locals, fn) { 
     res.render(view, _.extend(settings.template_defaults, locals), fn); 
    }; 
    next(); 
}); 

はこれを行うには良い方法はありますか?

+0

あなたは何をしていますやろうとしている? –

答えて

7

app.localsあなたが探しているものと思われる:res.localsres.renderとともに

app.locals(settings.template_defaults); 

、Expressはすでにあなたのための値をマージすることができ:

// locals for all views in the application 
app.locals(settings.template_defaults); 

// middleware for common locals with request-specific values 
app.use(function (req, res, next) { 
    res.locals({ 
     // e.g. session: req.session 
    }); 
    next(); 
}); 

// and locals specific to the route 
app.get('...', function (req, res) { 
    res.render('...', { 
     // ... 
    }); 
}); 
+0

これは 'res.locals'ですが、リンクは大丈夫です(1シンボルは編集できません)。 – elmigranto

+0

ありがとう@Jonathan Lonowskiこれは私が必要としていたものです! – TechplexEngineer

+0

詳細情報:http://expressjs.com/api.html#app.locals – TechplexEngineer

3
res.locals or app.locals is for this exact purpose. 
関連する問題