Вот базовая настройка. Я пытаюсь создать простой компонент промежуточного программного обеспечения, который позволит мне легко передавать данные с моего маршрута непосредственно на мой javascript на стороне клиента. (Очень похож на 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()}
Что это делает, выводится строка javascript на клиенте, которая создает точный JSON-объект, который был создан на стороне сервера.
Здесь вопрос; все работает так, как ожидалось, но будучи новым для Express и Node.js в целом, мне было просто любопытно, если привязка свойств к объекту ответа в порядке, или что-то не так с этим, что я просто пропускаю? По какой-то причине он не проходит мой "тест на запах", но я не уверен, почему.....