2012-04-18 9 views
5

मैं उस बिंदु पर हूं जहां मैं वास्तव में अपने कोड को इस तरह से व्यवस्थित करना चाहता हूं जो इसे अधिक स्केलेबल और प्रबंधनीय बनाता है। मैं एक ढांचे का उपयोग किए बिना जावास्क्रिप्ट में एमवीसी वास्तुकला की बेहतर समझ प्राप्त करना चाहता हूं।वेनिला में एमवीसी जावास्क्रिप्ट

मॉडल:

तो यह मैं अब तक क्या समझ (कृपया कृपया कृपया मुझे सही कर अगर मैं गलत हूँ) है साइटों की एक संगठित ढांचे/वेब एप्लिकेशन सामग्री (चित्र, कॉपी, डाउनलोड करने योग्य सामग्री, आदि ...) जिसमें सामग्री के हेरफेर में भी तर्क की आवश्यकता है। इसलिए जावास्क्रिप्ट में मॉडल एक JSON ऑब्जेक्ट या एक php फ़ाइल को कॉल कर सकता है जो डेटाबेस को पुनर्प्राप्त/अपडेट करता है और मॉडल का तर्क उन कार्यों को हो सकता है जो सामग्री को पार्सिंग, रीगेक्स-आईएनजी और व्यवस्थित करने के लिए ज़िम्मेदार हैं ताकि इसे तब सौंप दिया जा सके देखने के लिए बंद?

देखें: उपयोगकर्ता इंटरफ़ेस और मॉडल के डेटा/सामग्री का दृश्य प्रतिनिधित्व। इसका एकमात्र काम सामग्री को प्रदर्शित करना और लागू होने पर उपयोगकर्ता इनपुट स्वीकार करना है?

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

एमवीसी मेरे लिए भ्रम का मुद्दा रहा है और अभी भी इस तथ्य के साथ संयुक्त है कि यह कहा गया है कि एमवीसी जावास्क्रिप्ट में एक प्राकृतिक प्राप्य चीज नहीं है (पट्टा पर जावा, एक्शनस्क्रिप्ट आदि जैसे नहीं है .. ।)

+0

जावास्क्रिप्ट से एमवीसी सहायक को देखने का प्रयास करें, इसके बारे में कुछ सिद्धांत पढ़ें। फिर आप उन तरीकों को अपनी पसंद की किसी भी भाषा में लागू कर सकते हैं। – TJHeuvel

+0

मुझे अभी तक जावास्क्रिप्ट में स्क्रैच से एमवीसी का एक शुद्ध एमवीसी कार्यान्वयन देखने को मिला है। TodoMVC में वेनिला जेएस कार्यान्वयन निश्चित रूप से सच एमवीसी नहीं है, हालांकि इसमें विभिन्न परतों का पृथक्करण है। स्वीकृत उत्तर पर मेरी टिप्पणी देखें। हेड फर्स्ट डिज़ाइन पैटर्न से चित्रण सहायता कर सकता है: http://codereview.stackexchange.com/questions/42353/is-the-vanilla-implementation-of-todomvc-really-an-mvc-app – oligofren

+0

की कमी के कारण स्क्रैच से असली एमवीसी बॉयलरप्लेट कोड शामिल है। वेनिला टोडोएमवीसी ऐप जेएस की 900+ लाइनें है, फिर भी असली एमवीसी होने के लिए आवश्यक भागों को याद नहीं है। "भेड़" का जवाब बताता है कि यह एक बुरी चीज क्यों नहीं है;) – oligofren

उत्तर

3

कोड को देखना हमेशा मेरे लिए सीखने का सबसे अच्छा तरीका रहा है इसलिए मुझे लगा कि मैं इन्हें साझा करूंगा।

TODO mvc comparing many different JS MV* Frameworks

ऊपर के लिंक सभी जे एस एम वी * चौखटे तुलना करती है। इस डेमो विशेष रूप से, आपकी रुचि चाहिए

Vanilla JS Todo mv* implementation

source

यह की आवाज़ से आप समझते हैं कि MVC है और कितना जे एस में इसे लागू करने के लिए के रूप में उलझन में हैं, बस देखने के लिए वहाँ कई अलग-अलग ढांचे पर (ember.js, backbone.js, आदि) और उनके स्रोत को लेने के लिए उनके स्रोत। टोडो सूची एक महान प्रारंभिक बिंदु है।

+1

वेनिला जेएस कार्यान्वयन एक एमवीसी कार्यान्वयन नहीं है। यह मॉडल-व्यू-जो भी कार्यान्वयन है - अधिकांश अन्य कार्यान्वयन (एमवीबी, एमवीपी, एमवीवीएम, और पसंद) की तरह। अधिक विशेष रूप से, वेनिला जेएस कार्यान्वयन एमवीसी नहीं है क्योंकि यह एमवीसी लगाए गए सरल प्रतिबंधों को लागू नहीं करता है: नियंत्रण में दृश्य और मॉडल + का संदर्भ है, दृश्य में मॉडल और नियंत्रक का संदर्भ है। इसमें मॉडल में कोई पर्यवेक्षक कार्यान्वयन भी नहीं है, ताकि दृश्य इसके आधार पर अपडेट हो सके। – oligofren

+0

@oligofren 2 साल के प्रश्न पर नीचे दिए गए वोट के स्पष्टीकरण के लिए धन्यवाद, मुझे लिंक अपडेट करने के लिए सतर्क किया। – Loktar

+0

अब कोशेर लगता है :) – oligofren

7

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

दूसरी सच्चाई यह है कि आप के रूप में वहाँ लोग हैं MVC पर लगभग के रूप में कई राय मिलेगा है;)

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

संबंधित मुद्दे