एक्सप्रेस में सभी मार्गों में से पहला मध्यवर्ती है जो कनेक्ट में परिभाषित है। एक्सप्रेस और अन्य ढांचे के बीच का अंतर यह है कि मिडलवेयर ज्यादातर नियंत्रक के सामने बैठता है और नियंत्रक प्रतिक्रिया समाप्त करता है। मध्यवर्ती का उपयोग करने का एक अन्य कारण नोड.जेएस की प्रकृति के रूप में अतुल्यकालिक है।
चलिए देखते हैं कि जावास्क्रिप्ट में नियंत्रक कैसा दिख सकता है।
var Controller = function() { };
Controller.prototype.get = function (req, res) {
find(req.param.id, function (product) {
res.locals.product = product;
find(res.session.user, function (user) {
res.locals.user = user;
res.render('product');
});
});
};
पहली चीज़ जो आपको शायद इस बारे में नोटिस करती है, वह नेस्टेड कॉलबैक है। परीक्षण करना मुश्किल है, पढ़ना मुश्किल है और यदि आपको सामानों को संपादित करने की आवश्यकता है तो आपको अपने इंडेंटेशन के साथ परेशान करने की आवश्यकता है। तो चलो प्रवाह नियंत्रण का उपयोग करके इसे ठीक करें और इसे सपाट बना दें।
var Controller = function() { };
Controller.prototype.update = function (req, res) {
var stack = [
function (callback) {
find(req.param.id, function (product) {
res.locals.product = product;
callback();
});
},
function (callback) {
find(res.session.user, function (user) {
res.locals.user = user;
callback();
});
}
];
control_flow(stack, function (err, result) {
res.render('product');
});
}
इस उदाहरण में आप ढेर के सभी विभिन्न कार्यों को निकालने और उन्हें परीक्षण या यहां तक कि अलग-अलग मार्गों के लिए उन्हें फिर से उपयोग कर सकते हैं। आपने देखा होगा कि नियंत्रण प्रवाह संरचना मिडलवेयर की तरह दिखती है। तो हमारे मार्ग में ढेर को मिडलवेयर के साथ प्रतिस्थापित करने दें।
app.get('/',
function (req, res, next) {
find(req.param.id, function (product) {
res.locals.product = product;
next();
});
},
function (req, res, next) {
find(res.session.user, function (user) {
res.locals.user = user;
next();
});
},
function (req, res, next) {
res.render('product');
}
);
इसलिए जब यह तकनीकी रूप से नियंत्रकों express.js में आप शायद प्रवाह नियंत्रण संरचनाओं, जो अंत में मध्यस्थ के रूप में ही है उपयोग करने के लिए मजबूर किया जाएगा करने के लिए संभव हो सकता है।