これが基本的なセットアップです。ルートからクライアント側の JavaScript に直接データを簡単に渡すことができるシンプルなミドルウェア コンポーネントを作成しようとしています。(Ruby のGon gem に非常に似ています)。私がやっている方法は、次のようなモジュールを使用することです。
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();
};
}
次に、私のルートでこれを行うことができます:
exports.index = function(req, res){
res.jshare.person = {firstName : "Alex"};
res.render('index', { title: 'Express' })
};
最後に、layout.jade で:
!{includeJShare()}
それが行うことは、サーバー側で作成された正確な JSON オブジェクトを作成するクライアント上の JavaScript の行を出力することです。
これが質問です。それはすべて期待どおりに機能しますが、一般的に Express と Node.js に慣れていないので、応答オブジェクトにプロパティをアタッチしても問題ないのか、それとも単に見落としているだけで何か問題があるのでしょうか? 何らかの理由で「においテスト」に合格しませんでしたが、その理由はわかりません....