क्या कोई जावास्क्रिप्ट एमवीसी (माइक्रो) ढांचा है? [बन्द है]


133

क्या कोई क्लाइंट-साइड जावास्क्रिप्ट MVC (माइक्रो) फ्रेमवर्क हैं?

मेरे पास एक जटिल HTML फॉर्म है, और यह MVC पैटर्न से लाभान्वित होगा।

मुझे लगता है कि एक अच्छा समाधान निम्नलिखित प्रदान करेगा:

  • मॉडल और व्यू कंट्रोलर को तब बदलते हैं जब मान बदलते हैं (ऑब्जर्वर पैटर्न)
  • पेज लोड होने पर फॉर्म डेटा से मॉडल पॉप्युलेट करें
  • मॉडल बदलने पर मॉडल से फ़ॉर्म को पॉप्युलेट करें

अजाक्स, धूमकेतु, JSONP और सभी जाज गंभीर ओवरकिल हैं।


2
क्या मैं गलत हूं या यह सिर्फ एक बुरा विचार है (या शायद एक रूपरेखा है जो बज़र्ड-कंप्लेंट है)।

2
मैंने कुछ समय पहले कुछ पर काम करना शुरू कर दिया था क्योंकि मुझे आपके जैसा ही एहसास था। यह उतना ही कम से कम है जितना कि यह, एएमडी और जैसा कि मुझे मिल सकता है, के रूप में बिना लाइसेंस के। इसका मतलब है कि कोई jQuery आदि नहीं है। मुझे पता है कि इसे अब बंद कर दिया गया है, लेकिन मुझे लगता है कि यह उस तरह की चीज हो सकती है जिसे आप ढूंढ रहे थे: github.com/Wolfy87/tarmac - मैंने हाल ही में इसके साथ बहुत कुछ नहीं किया है क्योंकि मुझे लगा कि मुझे लगा एकमात्र उपयोगकर्ता होगा।
ऑलिकल जूल


TodoMVC पर एक नज़र डालें , जो एक सरल TODO ऐप को लागू करके सभी उपलब्ध जावास्क्रिप्ट रूपरेखाओं की तुलना (लगभग) करता है।
कोपरपॉपर

जवाबों:


71

बैकबोन एक लाइट-वेट फ्रेमवर्क है। इसे आज़माएँ: http://backbonejs.org/


2
मुझे खुशी है कि मुझे बैकबोन मिला।
हारून ग्रीनली

मैं सहमत हूँ, एक निश्चित रूप से बाहर की जाँच करने के लिए!
इवानहो

एमवीसी तरीके से बैकबोन का उपयोग कैसे करें?
इस्माइल

1
@TristanJuricek वहाँ peepcode करने के लिए एक स्वतंत्र विकल्प है?
मैट

रीढ़ की हड्डी को छोड़ें और रीढ़ के लिए सही जाएं। इसे और अधिक तार्किक MVC कार्यान्वयन मिला है।
क्रिस जेनेस

33

JavaScriptMVC एक उत्कृष्ट समाधान है। यह सब कुछ है एक प्लगइन दृष्टिकोण आपको केवल उन विशेषताओं का चयन करने में सक्षम बनाता है जिनकी आपको ज़रूरत है। 2.0 तक, यह jQuery पर आधारित है।

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

हालाँकि, JavaScriptMVC अपने शक्तिशाली इवेंट डेलिगेशन आधारित नियंत्रकों की वजह से केवल सामान्य सामान्य उद्देश्य JavaScriptMVC लाइब्रेरी है।

इवेंट डेलिगेशन आपको ईवेंट हैंडलर संलग्न करने से बचता है, और बस आपके पेज के लिए नियम बनाता है।

अंत में, JMVC एक MVC आर्किटेक्चर से बहुत अधिक है। इसमें विकास चक्र के सभी भाग शामिल हैं:

  • कोड जेनरेटर
  • सेलेनियम और Env.js एकीकृत परीक्षण
  • प्रलेखन इंजन
  • स्वचालित संपुट + संपीडन
  • त्रुटि का पता लगाने और रिपोर्टिंग

1
JavascriptMVC के लिए +1 - मैंने इसे अभी कुछ ऐप के लिए उपयोग किया है, और यह बहुत अच्छा है। वेबसाइट पर कोड पीढ़ी के उदाहरणों को छोड़ दें। मुझे लगता है कि वे केवल रेल प्रशंसकों को शांत करने के लिए वहाँ हैं। :) मूल JQueryMX ऑब्जेक्ट मॉडल के साथ शुरू करें, और एक नियंत्रक बनाएं।
क्रिस जेनेस

1
जब से मैंने यह टिप्पणी की है, मैंने आवश्यकता और रीढ़ का उपयोग करने के लिए स्विच किया है। अंततः वे JMVC की तुलना में छोटे, अधिक सुरुचिपूर्ण और कम 'एंटरप्रिसिए' हैं। जेएमवीसी जावा डेवलपर्स की हमारी टीम के लिए जेएस में समायोजन करने के लिए अच्छा था, लेकिन जेएस को बेहतर समझने के लिए आपने इसे शुरू नहीं किया ...
क्रिस जेनेस

जेएमवीसी का MVC हिस्सा अब can.js
PHearst

21

स्पाइन में बैकबोन के समान एक एपीआई है लेकिन यह बहुत छोटा है। इसमें प्रोटोटाइप इनहेरिटेंस की सुविधा है।


2
यह कॉफीस्क्रिप्ट में भी लिखा गया है और कॉफीस्क्रिप्ट की कक्षाओं की शैली का उपयोग करता है - ऐसा नहीं है कि यह बहुत बड़ी जीत है, लेकिन यह थोड़े अच्छे हैं।
एक पेड nerd

1
मुझे लगता है कि यह रीढ़ की हड्डी से छोटा क्यों है? कॉफ़ीस्क्रिप्ट कोड अधिक कॉम्पैक्ट है ...
ब्रेंडेन

मुझे स्पाइन से प्यार है। शुद्ध awesomeness के लिए आवश्यकता के साथ इसका उपयोग करें। तथ्य यह है कि यह CoffeeScript आप को या तो डराने मत दो, यह सामान्य JS के साथ भी ठीक काम करता है ...
क्रिस Jaynes

ब्राउज़र समर्थन IE> = 9 है, इसलिए जाँच करें कि आपके आगंतुकों की प्रोफ़ाइल से मेल खाता है।
रिचर्ड

20

AngularJS jQuery के साथ मिलकर अच्छा काम करता है और आपको MVC संरचना और चिंताओं को अलग करने में बहुत मदद करेगा।

पूर्ण परीक्षण वातावरण और निर्भरता इंजेक्शन शामिल ...

इसे http://angularjs.org पर देखें


Angularjs 2013 के अंत में अब तक का सबसे अच्छा है .... मुझे लगता है ....
टोनी बाओ

15
कोणीय एक माइक्रो फ्रेमवर्क नहीं है: /
iConnor

1
सहमत हूँ, कोणीय एक सूक्ष्म ढांचा नहीं है।
वोज्टा

2
हां, सीखने की अवस्था भी गैर-आनुपातिक है जो अन्य रूपरेखाओं की तुलना में लाभकारी है।
vsync

4
कोणीय एक सूक्ष्म ढांचे के बिल्कुल विपरीत है। यह एक जानवर है।
hasen

14

वास्तव में है: http://www.javascriptmvc.com/

मुझे लगता है कि आप इसे पर्याप्त पाएंगे!


उस साइट पर ब्लिंक टैग है। o_0
टाड डोनाघे

वह साइट मेरे लिए बिल्कुल भी लोड नहीं है
जोश

1
फिर से कोशिश करें, फिर से काम करना चाहिए।
फ़िलिप एकबर्ग

14

मुझे लगता है कि यह कुछ ऐसा है जिसे आपको देखना चाहिए: http://knockoutjs.com/

(एक सिल्वरलाइट / wpf प्रोग्रामर के रूप में यह लाइब्रेरी थी जिसने मुझे आखिरकार जावास्क्रिप्ट सीखना शुरू किया। यह मॉडल-व्यू-व्यू-मॉडल (एमवीवीएम) पैटर्न पर आधारित है, जैसा कि मेरे लिए अभी एक अच्छा विकल्प है!)


एक सिल्वरलाइट / wpf प्रोग्रामर के रूप में मैंने नॉकआउट, बैकबोन और कुछ अन्य लोगों का मूल्यांकन किया। दिन के अंत में मैं एंगुलर चला गया। इसमें बाइंडिंग और MUCH अधिक हैं।
जोंपरल


8

Ember.js

ये तीन विशेषताएं हैं जो एम्बर को उपयोग करने की खुशी देती हैं:

  1. बाइंडिंग
  2. संगणित गुण
  3. ऑटो-अपडेट करने वाले टेम्प्लेट

बाइंडिंग

दो अलग-अलग वस्तुओं के बीच गुणों को सिंक में रखने के लिए बाइंडिंग का उपयोग करें। आप बस एक बार बाध्यकारी घोषित करते हैं, और एम्बर सुनिश्चित करेंगे कि परिवर्तन किसी भी दिशा में प्रचारित हो।

यहां बताया गया है कि आप दो वस्तुओं के बीच एक बंधन कैसे बनाते हैं:

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

बाइंडिंग आपको MVC (मॉडल-व्यू-कंट्रोलर) पैटर्न का उपयोग करके अपने एप्लिकेशन को आर्किटेक्ट करने की अनुमति देता है, फिर यह जानना आसान है कि डेटा हमेशा परत से परत तक सही तरीके से प्रवाह करेगा।

संगणित गुण

गणना किए गए गुण आपको एक संपत्ति की तरह एक फ़ंक्शन का इलाज करने की अनुमति देते हैं। गणना किए गए गुण उपयोगी हैं क्योंकि वे किसी भी अन्य संपत्ति की तरह, बाइंडिंग के साथ काम कर सकते हैं।

ऑटो अपडेट करने वाले टेम्पलेट

एम्बर हैंडलबार्स का उपयोग करता है, जो एक शब्दार्थ अस्थायी पुस्तकालय है। अपने JavaScript एप्लिकेशन से डेटा लेने और उसे DOM में डालने के लिए, एक टैग बनाएं और उसे अपने HTML में डालें, जहाँ आप मान प्रकट करना चाहें:

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

2
किसी भी तरह से बैकबोन पर उपयोग करने के लिए एम्बर लाभप्रद है .... यदि प्रारंभिक चरणों में विनिर्देशों इतने स्पष्ट नहीं हैं ..
बिजेंद्र

4
मुझे emberJS पसंद है, लेकिन यह "माइक्रो" नहीं है, यह बहुत बड़ा है क्योंकि इसका फ्लैट आउट फ्रेमवर्क है
iConnor

1
एक ही वाक्य में एम्बर और माइक्रोफ्रामवर्क का उपयोग करने की अनुमति नहीं दी जानी चाहिए।
उपसर्ग

8

Stapes.js

पूर्ण प्रकटीकरण: मैं इस पुस्तकालय के लेखक हूँ :)

यदि आप वास्तव में छोटे कुछ देख रहे हैं (1.5kb छोटा / gzipped) एक नज़र है, और मुझे बताएं कि क्या आप इसे पसंद करते हैं।


पहली नजर में बहुत अच्छा लग रहा है! मुझे प्रोटोटाइप फ़ोकलिटेंस (कोई नकली कक्षाएं, और कोई भ्रमित newऑपरेटर नहीं) पर आपका ध्यान पसंद है । जो अनावश्यक लगता है वह अभी eachऔर है map। मेरे पास पहले से ही उन्हें अंडरस्कोर.जेएस और jQuery में है
फेकली

7

यदि आपकी आवश्यकताएं वास्तव में सरल हैं, तो आप अपना खुद का सरल MVC लिख सकते हैं जैसे कि एलेक्स नेटक्वाव ने किया था।

उनके उदाहरण डोजो पर बनाए गए हैं (ध्यान दें: वे मेरे पेज पर मेरे लिए काम नहीं कर रहे हैं क्योंकि एक लापता डोजो.जेएस फ़ाइल है), लेकिन आप सादे जावास्क्रिप्ट में पैटर्न का पालन कर सकते हैं।


4

यह संभवतः आपके लिए आवश्यक है, लेकिन स्प्राउटकोर एक MVC फ्रेमवर्क है, और यह JavaScriptMVC या ट्रिमपैथ जंक्शन से अधिक भारी नहीं दिखता है ।

दुर्भाग्य से, इनमें से कोई भी प्रगतिशील वृद्धि के सिद्धांत पर निर्मित नहीं लगता है ।


1
JavaScriptMVC के मुख्य MVC घटक Backbone के gzipped (जबकि एक नंबर अधिक सुविधाएँ हैं) की तुलना में लगभग 1k बड़ा है। और JMVC उत्तरोत्तर उन्नत ऐप्स बनाने में पूरी तरह सक्षम है। आप बस मॉडल परत को फेंक देंगे।
जस्टिन मेयर

3

लोकप्रिय ActionScript MVC फ्रेमवर्क PureMVC को हाल ही में जावास्क्रिप्ट में पोर्ट किया गया था। मुझे अभी तक इसे आज़माने का मौका नहीं मिला है, लेकिन मुझे विश्वास है कि यह अच्छा है।


मुझे यह फ्लेक्स के लिए पसंद है। सरल और शक्तिशाली।
ग्लेन

3

कृपया jquery- क्लेडपूल चेकआउट भी करें ।

jquery- क्लेडपूल, jquery पर निर्मित एक छोटा, तेज़, रबेल्ड पीवीसी फ्रेमवर्क है जो django, रेल, स्प्रिंग आदि के साथ मेरे अनुभव के आधार पर है। यह बहुत हल्का वजन है और क्लाइंट और सर्वर वातावरण दोनों पर चलता है।

यह स्वच्छ mvc, श्रेणी लॉगिंग, फिल्टर (एनओपी), नियंत्रकों के आलसी निर्माण, नियंत्रण के व्युत्क्रम, कन्वेंशन-ओवर-कॉन्फ़िगरेशन और डिज़ाइन द्वारा बहुत अधिक नहीं के लिए एक रूटिंग ढांचा प्रदान करता है।

यह कुछ भी नहीं करता jquery पहले से ही करता है, jquery की तरह महसूस करता है, और एक अच्छे ढांचे की तरह काम करता है: बस।

jQuery-क्लेपूल

आशा है कि आप इसकी जांच करेंगे।


आप बैकबोन के संबंध में क्लेपूल को कैसे देखते हैं?
पेपिजन जू

2

जमाल मेरे द्वारा देखा गया सबसे हल्का है। यह jQuery (बोनस) पर भी आधारित है। उपयोग नहीं किया है।

http://jamal-mvc.com/


2

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


2

यहाँ मानव जाति के लिए ज्ञात सभी खुले स्रोत जावास्क्रिप्ट चौखटे की एक सूची है।

http://getopensource.info/explore/javascript/framework/

या केवल MVC फ्रेमवर्क

http://getopensource.info/explore/javascript/mvc/

प्रकटीकरण: मैं इस वेबसाइट का डेवलपर हूं।



2

अद्यतन 2016: Sammy.js को छोड़ दिया जा रहा है।

सैमी.जेएस पर एक नजर

साइट से पाठ:

कक्षा के साथ एक छोटा वेबफ़्रेमवर्क।

  • छोटे सैमी का कोर केवल 16K संकुचित और 5.2K संकुचित और gzipped है
  • MODULAR सैमी प्लगइन्स और एडेप्टर की एक प्रणाली पर बनाया गया है। केवल वह कोड शामिल करें जिसकी आपको आवश्यकता है। पुन: प्रयोज्य प्लगइन्स में अपना कोड निकालना भी आसान है।
  • CLEAN संपूर्ण API को समझने और पढ़ने में आसान बनाने के लिए डिज़ाइन किया गया था। सैमी अच्छे एनकैप्सुलेशन और एप्लिकेशन डिज़ाइन को प्रोत्साहित करने की कोशिश करता है।
  • मज़ा क्या विकास का असली बिंदु है अगर यह सुखद नहीं है। सैमी MATZ दृष्टिकोण का पालन करने की कोशिश करता है। यह डेवलपर खुशी के लिए अनुकूलित है।

क्या आप MATZ का विस्तार कर सकते हैं?
kstep

रूबी के निर्माता युकीहिरो "मात्ज़" मात्सुमोतो ने अक्सर कहा है कि वह "रूबी को प्राकृतिक बनाने की कोशिश कर रहा है, न कि सरल", एक तरह से जीवन को प्रतिबिंबित करता है। इसलिए सॉफ्टवेयर को उपयोगकर्ता को स्वाभाविक महसूस करना चाहिए। इसका मतलब MATZ दृष्टिकोण से है।
बिजन


1

CorMVC, समझने में आसान और शुरू करने के लिए, jquery आधारित और किसी भी सर्वर तकनीक पर निर्भर नहीं करता है


1

मैंने MCV नामक एक बहुत ही सरल जावास्क्रिप्ट MVC फ्रेमवर्क विकसित किया है । यह वही नहीं करता है जो आप पूछते हैं, लेकिन यह आसानी से सहायकों के साथ एक्स्टेंसिबल है। वैसे भी, यह निश्चित रूप से सूक्ष्म है (1,9kb पैक)।

यह कमोबेश जमाल की तरह काम करता है, लेकिन मैंने दो कारणों से खुद को रोल करने का फैसला किया:

  • jQuery की निर्भरता को दूर करें (हालांकि मैं इसे jQuery के साथ सबसे अधिक बार उपयोग करता हूं)
  • सहायकों के साथ इसे विस्तार योग्य बनाना। ये CakePHP व्यवहार, घटकों और सहायकों के अनुरूप हैं।


1

मैंने AngularJS (पूर्ण प्रकटीकरण, मैंने कोणीय देव प्रयास के साथ एक सीमित तरीके से शामिल किया है) को उकसाया और इससे बहुत उत्साहित हूं। मैंने एक आंतरिक परियोजना के लिए एक विशेषता लेने के लिए एक साइड-बाय-साइड तुलना की (क्षमा करें, इसे साझा करने के लिए साइनऑफ़ नहीं है) और इसे AngularJS और Backbone दोनों में लागू किया गया है। यह एक बेहतरीन व्यायाम था और अंत में, मैं बहुत से एंगुलर की ओर झुक रहा हूं। कोर डेवलपर्स सवालों के जवाब देने के बारे में महान हैं और उन्होंने बिलिन डेटाबाइंडिंग, यूनिट / ई 2 ई परीक्षण और प्रलेखन के साथ वास्तव में अच्छा काम किया है। इसके बीटा में अभी भी 1.0 निकट भविष्य में निकल रहा है। बीटा बहुत स्थिर है।

थोड़ा सा बदलाव है, और वे सबसे अलग दृष्टिकोण का उपयोग करते हैं। अपने पसंदीदा jquery प्लगइन्स को एकीकृत करने में थोड़ी मेहनत लगती है लेकिन यह संभव है और किया गया है (github पर कोणीय-कंट्रीब)।

मैं कहूंगा (और यह अधिकांश js-centric Frameworks के लिए एक समस्या है), यह सुनिश्चित करने के लिए जांच करें कि आपकी सामग्री को एसईओ के अनुकूल कैसे बनाया जाए (यदि यह आपके लिए महत्वपूर्ण है)। जून में कोणीय समुदाय में शामिल होने के बाद, मैंने देखा है कि रुचि बढ़ रही है और कई लोग यह कहते हुए पोस्ट बना रहे हैं कि उन्होंने बैकबोन और अन्य को देखा है, लेकिन वास्तव में वे वही देख रहे हैं जो वे कोणीय में देख रहे हैं।





0

"कोहेरेंट" नामक एक कुंजी-मूल्य बंधन जावास्क्रिप्ट ढांचा था, जो कि ऐप्पल के कोको बाइंडिंग से प्रेरित था। रूपरेखा Apple द्वारा खरीदी गई है, लेकिन http://github.com/trek/coherentjs/tree/master में अभी भी एक पुरानी प्रति है ।




0

Can.js के पास आपकी ज़रूरत की हर चीज़ है और इसका वज़न सिर्फ 8 KB है। इसे JavaScriptMVC से सर्वश्रेष्ठ बिट्स लिया गया है और इसे पर्यवेक्षकों, विजेट्स, बाइंडिंग, कार्यों के साथ एक छोटे, अभी तक किकस्टॉक फ्रेमवर्क में डिस्टिल्ड किया गया है। यह प्रमुख फ्रेमवर्क ( jQuery , Dojo Toolkit , MooTools , आदि)के साथ संगत है। प्रलेखन उत्कृष्ट है और लेखक उत्तरदायी हैं। यह निश्चित रूप से देखने लायक है।

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