2013-06-17 3 views
6

में मैं exploring विभिन्न एमवी * पैटर्न हूं और ध्यान दिया कि MVP नेट अनुप्रयोगों में बहुत अधिक उपयोग किया जाता है लेकिन लगभग कहीं और नहीं।
एकमात्र अन्य बड़ा ढांचा जो इसे शामिल करने लगता है वह जीडब्ल्यूटी है लेकिन केवल कुछ हिस्सों में है।उदाहरण मॉडल-व्यू-प्रेजेंटर ऐप नोडजेस

  1. एमवीपी ऐसी माइक्रोसॉफ्ट चीज़ क्यों है (यह अन्य भाषाओं में लगभग लोकप्रिय क्यों नहीं है)?
  2. क्या कोई नोडज ऐप/प्रोजेक्ट है जो एमवीपी का उपयोग करता है (अधिमानतः स्रोत के साथ मैं देख सकता हूं)?
+1

शायद यह सिर्फ इस मामले का एक मामला है http://stackoverflow.com/questions/327955/does- कार्यात्मक- प्रोग्रामिंग-replace-gof-design-patterns (innet) – mkoryak

+0

जावा एसडब्ल्यूटी और स्विंग एमवीपी-आईएसएच हैं, मुझे याद नहीं है कि केकेपीएचपी एक एमवीसी था या अधिक विशेष रूप से एमवीपी दृष्टिकोण - यह बहुत लंबा समय रहा है क्योंकि मैंने इसके साथ काम किया था।और सामान्य रूप से जावास्क्रिप्ट के लिए कुछ ढांचे हैं जो एमवी * डिज़ाइन पैटर्न क्लाइंट-साइड करते हैं जो मैं खराब हो सकता हूं। हालांकि, मुझे लगता है कि आप कुछ सर्वर-साइड की तलाश में हैं, शायद ऐसा कुछ जो ओआरएम के साथ काम करता है जैसे कि अनुक्रमित है, क्या यह सही है? – hoonto

+0

हाँ मैं सर्वर-साइड एमवीपी उदाहरण की तलाश में हूं। वास्तव में परवाह नहीं है कि ओआरएम क्या उपयोग करेगा, अगर कोई है। क्लाइंटसाइड पर, मुझे लगता है कि रीढ़ की हड्डी एक एमवीपी – mkoryak

उत्तर

1

कोई महान नोडजेज़ में एमवीपी के उदाहरण नहीं थे। हमने अनुसंधान का एक गुच्छा किया और TODO app को nodejs और .net में एमवीपी पैटर्न का उपयोग करके लागू किया।

यह अभी तक सही नहीं है, लेकिन मुझे लगता है कि यह एक अंतर भरता है। पुल अनुरोधों का स्वागत है।

https://github.com/EchoGlobalLogistics/mvp

-1

एमवी * फैशन में नोड का उपयोग करना निश्चित रूप से संभव है। यहाँ कुछ वास्तव में अच्छा प्रश्न/उत्तर है कि मैं जब मेरे आवेदन पत्र की संरचना एक गाइड के रूप में इस्तेमाल किया गया है कर रहे हैं:

How to structure a express.js application?

ExpressJS How to structure an application?

कि एमवी हैं * आधारित नोड के लिए कुछ चौखटे के साथ-साथ हैं :

  • Matador
  • नई Sails.js (रेल के बंद आधारित)
  • अधिकांश नोड फ्रेमवर्क Express.js पर बनाए गए हैं, जिन्हें ऊपर दिए गए उत्तरों में बताया गया है कि एमवी * के रूप में अनुकूलित किया जा सकता है।

यहां एक sample app एक एमवी * फैशन में शुद्ध एक्सप्रेस पर बनाया गया है।

+0

ये सभी हैं एमवीसी ढांचे। – mkoryak

0

टीएल; डी विशेष रूप से सीएलआई प्लगइन पर flatiron रूपरेखा देखें। यह लेख https://blog.nodejitsu.com/writing-cli-apps-with-flatiron और इसका उदाहरण अनुभाग भी है।

आपके पहले प्रश्न का उत्तर देते हुए मैं कहूंगा कि एमवीपी माइक्रोसॉफ्ट नहीं है, यहां तक ​​कि विकिपीडिया लेख भी बताता है। माइक्रोसॉफ्ट में सिर्फ भाषा डिजाइनरों ने विगेट्स कार्यान्वयन के विवरण छिपाने के प्रतिमान को चुना है।

जब आप एक उपयोगकर्ता के रूप में एक विजेट के साथ बातचीत करते हैं तो वहां बहुत सी चीजें चल रही हैं। और कुछ हद तक ऐसा लगता है कि विजेट स्वयं को अपने स्वयं के व्यवसाय तर्क मॉडल के साथ एक छोटे से एप्लिकेशन के रूप में देखा जा सकता है, इसके स्वयं के दृश्य और नियंत्रक के साथ। उदाहरण के लिए एक ड्रॉपडाउन के बारे में सोचें: इसमें स्क्रीन पर कुछ आयतों को वास्तव में आकर्षित करने के तरीकों का एक सेट है, इसमें पाठों के रूप में मूल्यों की एक सूची प्रस्तुत करने के तरीके भी हैं, और जब आप किसी आइटम पर क्लिक करते हैं तो पृष्ठभूमि और टेक्स्ट का रंग बदल रहा है कुछ नियमों के अनुसार होता है (व्यापार तर्क सोचो)। माइक्रोसॉफ्ट के नेट प्लेटफार्म में यूजर इंटरफेस के साथ बहुत कुछ करना है। यही कारण है कि एक प्रतिमान चुनना बहुत महत्वपूर्ण है जो उस उद्देश्य को बेहतर तरीके से फिट करेगा।

दूसरी ओर नोड एक पूरी तरह से बैकएंड मंच है, यह वेब अनुप्रयोग बनाने के लिए एक ढांचा नहीं है। मैं यह नहीं कह रहा हूं कि आप इसके साथ एक वेब ऐप नहीं बना सकते हैं या नहीं। मैं जो कह रहा हूं वह यह है कि वेब अनुप्रयोग में नोड कोड की भूमिका आईओ तक ही सीमित होनी चाहिए। अनुरोध प्राप्त करना, प्रतिक्रिया भेजना, स्टोरेज से डेटा भेजना/प्राप्त करना, शायद पार्सिंग करना। और आप निश्चित रूप से नोड के शीर्ष पर वेब अनुप्रयोग बनाने के लिए एक ढांचा बना सकते हैं।

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

अनुप्रयोगों की एक अलग श्रेणी है जिसे बनाने के लिए नोड का उपयोग किया जा सकता है। वे सीएलआई ऐप्स होंगे। यह वह जगह है जहां आप एमवीपी का उपयोग कर अनुप्रयोग बना सकते हैं और प्रेजेंटर को नोड में बना सकते हैं। उदाहरणों की तलाश करने के लिए मैं फ्लैटिरॉन वेब framework को देखने का सुझाव दूंगा, जिसमें क्ली ऐप्स बनाने के लिए अच्छा समर्थन है और ऐसे ऐप्स के कुछ उदाहरण भी हैं: https://blog.nodejitsu.com/writing-cli-apps-with-flatiron

इसके अलावा https://github.com/mscdex/node-ncurses है। यह आपको "अपना खुद का एमवीपी रोल" करने का मौका दे सकता है। जब आपका लक्ष्य चीज़ का पता लगाना है तो कौन सा अच्छा अभ्यास है।

3

इसके बारे में कारण एक Microsoft बात की तरह लग रही के बारे में बात करने के लिए, कम से कम 2 बड़ी कंपनियों के डिजाइन फैसले और उनके संबंधित व्यवस्थाएं करने के लिए निहित जा सकता है। माइक्रोसॉफ्ट ने एमवीपी को .NET में शामिल किया। जबकि ऐप्पल ने कोको में एमवीसी का चयन किया।

जावास्क्रिप्ट का सवाल है, हाल ही में ढांचे पर एक नज़र डालें Riot.js https://moot.it/blog/technology/riotjs-the-1kb-mvp-framework.html

हालांकि यह विशेष रूप से एक "Node.js ढांचे", इसके बारे में "isomorphic जावास्क्रिप्ट" इस अवधि की ओर बढ़ कुछ का एक उदाहरण है नहीं है (जावास्क्रिप्ट परत क्लाइंट + सर्वर पर चलती है), और कई इंजीनियरों को कई अलग-अलग अनुभवों और पृष्ठभूमि से आकर्षित करके तालिका में लाया जा सकता है।

उस लेख से:

दंगा मॉडल आपके आवेदन को परिभाषित। यह एक अच्छी तरह से विचार एपीआई के साथ बाहरी दुनिया के संपर्क में आपका व्यावसायिक तर्क है। एक पूरी तरह से पृथक, टेस्टेबल इकाई जिसे ब्राउज़र और सर्वर (node.js) में चलाया जा सकता है।

मेरे अनुभव से, और मेरी आगामी सामान्य कंबल बयान क्षमा करें, कारण है कि एमवीपी नहीं देखा जाता है क्योंकि कई लोगों को या तो इसके बारे में नहीं सुना है है कि इस प्रौद्योगिकी के क्षेत्र में ज्यादा है, यह भूल गए हैं, या बस डॉन "नियंत्रक" क्या है और "प्रस्तुतकर्ता" क्या है उससे बहुत अंतर नहीं देखता है। इसका मतलब यह नहीं है कि कोई फर्क नहीं पड़ता है, और टीरो पिइरेनैन ने अन्य जावास्क्रिप्ट एमवीसी ढांचे से आने वाले लोगों के लिए Riot.js आलेख में चीजों को काफी अच्छी तरह से रेखांकित किया है।

0

हमने हाल ही में वेब ऐप बनाने के लिए एक्सप्रेस के साथ नोडज का उपयोग किया था। इस पर काम करते समय, हमने अपने कोड को व्यवस्थित करने के लिए एक्सप्रेस के शीर्ष पर एक छोटा ढांचा बनाया। ढांचा आपको अनुरोधों के लिए अलग-अलग हैंडलर (प्रस्तुतकर्ता) लिखने और POST अनुरोधों के लिए आदेश लिखने के लिए मजबूर करता है। (martinfowler.com/bliki/CQRS.html देखें)। ढांचा केवल कमांड से रीडायरेक्ट की अनुमति देकर पोस्ट-रीडायरेक्ट-गेट पैटर्न (en.wikipedia.org/wiki/Post/Redirect/Get) को भी मजबूर करता है। एनपीएम पैकेज expressmvp (https://www.npmjs.org/package/expressmvp) है।