जैसा कि मुझे पता है कि अभी तक जावास्क्रिप्ट के लिए कोई विशिष्ट पैटर्न नहीं हैं। लेकिन मुझे लगता है कि विगेट्स (घटक) दृष्टिकोण जैसे कुछ की संभावना है। चूंकि मुख्य रूप से हम अपने एचटीएमएल कोड को सशक्त बनाने के लिए जावास्क्रिप्ट का उपयोग करते हैं। यह तर्कसंगत है कि हमें अपने प्रत्येक जावास्क्रिप्ट ऑब्जेक्ट को HTML टैग से कनेक्ट करना चाहिए। तो यहां हमारे पास मॉडल (जेएसओब्जेक्ट) + व्यू (एचटीएमएल प्रस्तुतिकरण) जैसे कुछ है। एमवीसी प्राप्त करने के लिए हमें नियंत्रकों की आवश्यकता है और हमारे पास इसके लिए कार्यक्रम हैं। इस मामले में हम आसानी से extensibel घटक incapsulated होगा।
उदाहरण के लिए
:
// this is a part of some FormValid.js
<script>
function FormValid(){
}
FormValid.prototype.validate=function(){...}
</script>
//this is our HTML
<form id="form1"...onsubmit="this.jsObject.validate();">
</form>
<script>
//all the following stuff could be solved in one line, but you need to create some helper. Like Components.Attach("FormValid").to("form1");
var newObj=new FormValid()
var form=document.getElementById("form1");
from.jsObject=newObj;
newObj.htmlObj=form;
</script>
इसके अलावा, मैं Zparser तरह टेम्पलेट इंजन का उपयोग कर देख सकते हैं और मॉडल को अलग करने की एक विचार है। मैं इसके लिए जेएस लाइब्रेरी विकसित कर रहा हूं, इसलिए मैं अभी इस प्रश्न में हूं।
हमारे पास के साथ मूल वस्तु है विधि देखें। हमारे सभी वर्गों में यह अंत में एक प्रोटोटाइप की तरह है। इस विधि को टेम्पलेट्स कक्षा की संपत्ति और कुछ टेम्पलेट्स पार्सर का उपयोग करके हमारे मॉडल पर HTML बेसिंग उत्पन्न करता है। यह HTML HTMLObj नोड में डाला गया है ताकि हमारे ऑब्जेक्ट का दृश्य अपडेट हो। यह मूल रूप से एक विचार है और हमारे कोड हो जाता है:
// this is a part of some FormValid.js
<script>
function FormValid(){
}
Components.extendCore(FormValid);
FormValid.prototype.validate=function(){...}
</script>
FormValid.prototype.templates={
main:'<form class="form1"...onsubmit="this.jsObject.validate();">...</form>'
}
//this is our HTML
<div id="form1"></div>
<script>
Components.Attach("FormValid").to("form1");
</script>
मुझे अभी भी लगता पिछले एक इनलाइन <script>
होना चाहिए और यह प्रतिनिधित्व के साथ तर्क मिश्रण नहीं है, क्योंकि इस घटक है - ठोस टुकड़ा। इसका कोई दूसरा अर्थ नहीं है। वास्तव में यह आवेदन का एक हिस्सा होना चाहिए। घटक के एचटीएमएल की तरह कुछ (लास में एक उदाहरण div है) को परिभाषित किया जाना चाहिए और घटक के साथ लपेटा जाना चाहिए जो स्वचालित रूप से स्क्रिप्ट और आईडी जोड़ देगा।
अब। मैंने आपको 2 उदाहरण दिखाए और मैं समझाऊंगा कि दूसरा क्यों विशिष्ट है।
सभी सामान अभिगम्यता और प्रदर्शन (और मेमोरी लीक) में है। यदि आप अक्सर सभी एचटीएमएल घटक को रीफ्रेश करेंगे - यह झपकी देगा, आपको सभी गतिशील घटनाओं को वापस सेट करने और मेमोरी लीक के लिए सब कुछ जांचने की आवश्यकता होगी। लेकिन जेएस असफल होने पर मुख्य समस्या - आपका आवेदन कुछ भी नहीं दिखाएगा।
तो मैं उन दोनों के बीच चुनाव करना पसंद करता हूं :) और उनके स्थानों पर सबकुछ उपयोग करना पसंद करता हूं।
स्रोत
2009-08-31 10:45:09
कोई कारण नहीं है कि एमवी [सी | पी] लागू नहीं होना चाहिए - इसकी सुंदर भाषा स्वतंत्र है। – Chii