Đây là thiết lập cơ bản. Tôi đang cố gắng để tạo ra một thành phần trung gian đơn giản mà sẽ cho phép tôi dễ dàng truyền dữ liệu từ tuyến đường của tôi trực tiếp đến javascript của tôi ở phía khách hàng. (Rất giống với viên đá quý Gon trong ruby). Con đường tôi đang làm đó là do có một mô-đun đó trông như thế này:Có thể thêm dữ liệu vào đối tượng phản hồi trong mô-đun phần mềm trung gian trong Express.js không?
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();
};
}
Sau đó, trong lộ trình của tôi, tôi có thể làm điều này:
exports.index = function(req, res){
res.jshare.person = {firstName : "Alex"};
res.render('index', { title: 'Express' })
};
Cuối cùng trong layout.jade:
!{includeJShare()}
Điều gì xảy ra ở đầu ra một dòng javascript trên máy khách tạo đối tượng JSON chính xác đã được tạo phía máy chủ.
Đây là câu hỏi; tất cả đều hoạt động như mong đợi, nhưng là mới đối với Express và Node.js nói chung, tôi chỉ tò mò nếu gắn các thuộc tính vào đối tượng phản hồi là OK, hoặc có điều gì đó sai khi thực hiện nó mà tôi chỉ đơn giản là nhìn? Vì một lý do nào đó nó không vượt qua "thử nghiệm mùi" của tôi nhưng tôi không chắc tại sao .....
Cảm ơn phản hồi của bạn. Nếu bạn nhìn vào mẫu mã của tôi, tôi tin rằng tôi sẽ đi sâu hơn một cấp, tôi có "res.jshare.person". Đó có phải ý của bạn? – BFree
Vâng, đó chính là điều tôi muốn nói. Tôi không có ý chỉ trích mã của bạn, tôi chỉ muốn nhấn mạnh nó. Vì vậy, bạn đã làm nó đã đúng và jshare không giống như một từ chung chung mà sẽ kết thúc được sử dụng bởi một thư viện. Nó tốt. :) – hasanyasin
Tôi cũng không thể nghĩ ra lý do, nhưng tôi thường thấy nhiều thứ được thêm vào yêu cầu. Sức mạnh của nút và kết nối/Express xuất phát từ việc truyền các vật thể này xung quanh, và mỗi lớp mở rộng chúng theo cách riêng của nó. Ví dụ, Express thêm gửi() vào đối tượng phản hồi. –