2012-12-22 24 views
8

Tôi muốn biết nếu có cách nào được xây dựng để mở rộng chức năng res.render của Express.js bởi vì, tôi muốn chuyển một tập hợp mặc định của "người dân địa phương "cho mọi mẫu được hiển thị. Hiện tại tôi đã viết một phần mềm trung gian nhỏ sử dụng chức năng mở rộng của underscore.js để hợp nhất các "người dân địa phương" mặc định và những cái cụ thể cho mẫu đó:Node.js - Expressjs middleware để mở rộng res.render

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

Có cách nào tốt hơn không?

+0

bạn là gì cố gắng làm? –

Trả lời

7

app.locals là khả năng những gì bạn đang tìm kiếm:

app.locals(settings.template_defaults); 

Cùng với res.localsres.render, Express là đã có khả năng sáp nhập các giá trị cho bạn:

// 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

Đó là 'res.locals', mặc dù liên kết vẫn ổn (không thể chỉnh sửa 1 biểu tượng). – elmigranto

+0

Cảm ơn @ Jonathan Lonowski, đây chính xác là những gì tôi cần! – TechplexEngineer

+0

Thông tin thêm: http://expressjs.com/api.html#app.locals – TechplexEngineer

3
res.locals or app.locals is for this exact purpose. 
Các vấn đề liên quan