これは基本的な設定です。私は簡単にミドルウェアコンポーネントを作成して、クライアント側のjavascriptに直接ルートからデータを簡単に渡すことができます。 (非常にルビーのGon宝石に似ています)。 layout.jadeで最後にExpress.jsのミドルウェアモジュールのレスポンスオブジェクトにデータを追加することはできますか?
exports.index = function(req, res){
res.jshare.person = {firstName : "Alex"};
res.render('index', { title: 'Express' })
};
:
私のルートに私はこれを行うことができ、その後module.exports = function(){
return function(req,res,next){
var app = req.app;
if(typeof(app) == 'undefined'){
var err = new Error("The JShare module requires express");
next(err);
return;
}
res.jshare = {};
app.dynamicHelpers({
includeJShare: function(req,res){
if(typeof(res.jshare) === 'undefined'){
return "";
}
return function(){
return '<script type="text/javascript">window.jshare=' + JSON.stringify(res.jshare) + '</script>';
}
}
});
next();
};
}
:私はそれをやっている方法は、次のようになりますモジュールを持つことです
!{includeJShare()}
これは、サーバーサイドで作成された正確なJSONオブジェクトを作成するクライアント上のJavaScriptの行を出力します。
ここに質問があります。それはすべて期待どおりに動作しますが、ExpressやNode.jsには一般的ではありませんが、レスポンスオブジェクトにプロパティを付けることは問題ないのでしょうか?何らかの理由で私の "臭いテスト"に合格しませんが、どうしても分かりません.....
ご回答ありがとうございます。私のコードサンプルを見ると、私は深いところに行くと信じています。私は "res.jshare.person"を持っています。それはあなたが意味することですか? – BFree
はい、それはまさに私が意味していたものです。私はあなたのコードを批判するつもりはなかった、私はただそれを強調したかった。だからあなたはすでにそれを正しくしていて、jshareは別のライブラリで使われるようになる一般的な言葉のようには見えません。それは良いです。 :) – hasanyasin
私は理由も考えることはできませんが、私はより一般的に要求に追加されたものを見た。ノードとConnect/Expressのパワーは、これらのオブジェクトを周囲から渡すことによってもたらされ、各レイヤーは独自の方法でそれらを拡張します。 Expressは、たとえばsend()をレスポンスオブジェクトに追加します。 –