नोड.जेएस + एक्सप्रेस: ​​रूट बनाम नियंत्रक


98

Node.js और एक्सप्रेस के लिए नया, मैं समझने की कोशिश कर रहा हूं कि दोनों को ओवरलैपिंग कॉन्सेप्ट, रूट बनाम कंट्रोलर लगता है।

मैंने ऐसे उदाहरण देखे हैं जो सरल app.js + मार्गों / * को करते हैं, यह आवश्यक विभिन्न अनुरोधों को रूट करने के लिए पर्याप्त लगता है।

हालाँकि, मैं लोगों को नियंत्रकों का उपयोग करने के बारे में बात करते हुए देखता हूं, और कुछ जो एक अधिक औपचारिक एमवीसी मॉडल (???) का अर्थ लगाते हैं।

बहुत अच्छा होगा अगर कोई मुझे इस रहस्य को साफ़ करने में मदद कर सकता है, और यदि आपके पास Node.js + एक्सप्रेस फ्रेमवर्क में नियंत्रक स्थापित करने के लिए एक अच्छा उदाहरण है जो बहुत अच्छा होगा!

धन्यवाद,

जवाबों:


129

एक्सप्रेस (और सामान्य रूप से नोड) के बारे में ठंडी चीजों में से एक यह है कि यह आप पर बहुत सारे विचारों को आगे नहीं बढ़ाता है; डाउनसाइड्स में से एक यह है कि आप पर कोई राय नहीं है। इस प्रकार, आप अपने दम पर ऐसी कोई भी राय (पैटर्न) स्थापित करने के लिए स्वतंत्र (और आवश्यक!) हैं।

एक्सप्रेस के मामले में, आप निश्चित रूप से एक एमवीसी पैटर्न का उपयोग कर सकते हैं, और एक रूट हैंडलर निश्चित रूप से एक नियंत्रक की भूमिका निभा सकता है यदि आप बहुत इच्छा रखते हैं - लेकिन आपको इसे उसी तरह सेट करना होगा। एक्सप्रेस उदाहरण फ़ोल्डर में एक महान उदाहरण पाया जा सकता है , जिसे कहा जाता है mvc। यदि आप देखते हैं lib/boot.js, तो आप देख सकते हैं कि कैसे उन्होंने controllersनिर्देशिका में प्रत्येक फ़ाइल की आवश्यकता के लिए उदाहरण स्थापित किया है , और नियंत्रकों पर बनाई गई विधियों के नाम के आधार पर फ्लाई पर एक्सप्रेस मार्ग उत्पन्न करते हैं।


2
इस सुंदर स्मार्ट उत्तर का पहला पैराग्राफ भी दो शब्दों के बीच एक अच्छी व्याख्या / अंतर दे रहा है।
फ्रैंक नोके

1

आपके पास बस रूट फ़ोल्डर या दोनों हो सकते हैं। उदाहरण के लिए, कुछ सेट मार्ग / पथ (उदा। / उपयोगकर्ता /: आईडी) और उन्हें पाने के लिए, पोस्ट, पुट / अपडेट, डिलीट, आदि से कनेक्ट करें और फिर रूट फ़ोल्डर में:

const subController = require('./../controllers/subController');

Router.use('/subs/:id);

Router
 .route('subs/:id');
 .get(
 subController.getSub
 .patch(
 subController.updateSub
 );

फिर, नियंत्रक फ़ोल्डर में:

exports.getSub = (req, res, next) => {
  req.params.id = req.users.id;
};

बस कुछ बनाने के लिए। मैंने बिना नियंत्रक फ़ोल्डर वाले प्रोजेक्ट किए हैं, और सभी तर्क को एक स्थान पर रखा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.