2013-10-18 8 views
6

मैं डोजो में जानते हैं कि हम दो तरह से किसी भी विगेट्स बना सकते हैं,डोजो में प्रोग्रामेटिक रूप से बनाम रूप से बनाए गए विजेट बनाम अंतर के बीच अंतर?

  1. प्रोग्राम के रूप में
  2. एलान के तौर पर

विगेट्स बनाने के लिए प्रोग्राम के रूप में हम जावास्क्रिप्ट, इस्तेमाल करेंगे एलान के तौर पर के लिए, जबकि हम एचटीएमएल टैग में डोजो विशेषताओं का उपयोग करेंगे।

क्या कोई मुझे समझा सकता है कि उनके बीच क्या अंतर है?

कौन सा सबसे अधिक पसंद किया जाता है और क्यों?

उत्तर

6

अंतर

ठीक है, दोनों तरीकों के बीच कुछ अंतर हैं। घोषणात्मक तरीके से, सभी कॉन्फ़िगरेशन HTML गुणों जैसे dojo-data-props पर आधारित हैं, लेकिन कुछ अन्य विशेषताओं जैसे मूल्य, शीर्षक, ... पर आधारित है। तो आपके द्वारा बनाए गए डोम नोड वास्तव में किसी प्रकार के प्लेसहोल्डर के रूप में कार्य करता है।

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


पसंदीदा

वहाँ कोई समाधान नहीं है कि ज्यादातर पसंद किया जाता है और यह आम तौर पर आपके आवेदन की आवश्यकताओं पर निर्भर करता है और क्या आपको लगता है विकसित करने की स्पष्ट तरीका है।

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

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

बस एक छोटा सा नोट; इसका मतलब यह नहीं है कि घोषणात्मक तरीका धीमा है। यह सिर्फ एक अतिरिक्त ऑपरेशन है जिसे निष्पादित किया जाना चाहिए और इस प्रकार, यह थोड़ा धीमा है लेकिन संभावना है कि अंतिम उपयोगकर्ता को अंतर भी दिखाई नहीं देगा।

घोषणात्मक तरीके का एक लाभ यह है कि, पृष्ठ लोड करते समय, अंतिम उपयोगकर्ता प्लेसहोल्डर को देखने में सक्षम होता है। यदि आप सही प्लेसहोल्डर चुनते हैं (उदाहरण के लिए, <select>dijit/form/FilteringSelect और dijit/form/ComboBox) के लिए, अंतिम उपयोगकर्ता कम से कम कुछ देखेंगे। यदि आप प्रोग्रामेटिक रूप से सब कुछ बनाते हैं, तो अंतिम उपयोगकर्ता जावास्क्रिप्ट कोड निष्पादित होने तक एक खाली पृष्ठ देखेंगे।

तो यदि प्रदर्शन आवश्यकताओं में से एक है, तो आप उन्हें प्रोग्रामिक रूप से चुनना चुन सकते हैं। यदि आप कोड का पृथक्करण करना चाहते हैं जहां प्रस्तुति परत व्यापार तर्क से अलग हो जाती है, तो मैं घोषणात्मक तरीके का उपयोग करने की अनुशंसा करता हूं।

लेकिन अंत में, दोनों समाधान अच्छे हैं।

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