Nicholas Zakas और Addy Osmani द्वारा इन वार्ता में वे अंतर्निहित आधार पुस्तकालयों से आवेदन को कम करने के लिए बड़े पैमाने पर जावास्क्रिप्ट अनुप्रयोगों का निर्माण करते समय एक सैंडबॉक्स के रूप में मुखौटा पैटर्न का उपयोग करने के विचार पर चर्चा करते हैं।सारणी jQuery
यह decoupling सिद्धांत में आपको अपने आवेदन मॉड्यूल को फिर से लिखने के बिना बेस लाइब्रेरी को स्विच करने की अनुमति देगा। हालांकि अभ्यास में यह लागू करना अधिक कठिन लगता है।
इस प्रस्तावित आर्किटेक्चर, जैसे कि AuraJS के ठोस कार्यान्वयन हैं। हालांकि स्रोत को देखने से ऐसा लगता है कि सैंडबॉक्स में अभी भी कुछ तरीकों से jQuery ऑब्जेक्ट्स लौटकर रिसाव अबास्ट्रक्शन हैं।
मैं विशेष रूप से AuraJS से चिंतित नहीं हूं, लेकिन इतनी अधिक कार्यक्षमता खोए बिना jQuery जैसी लाइब्रेरी को सारणी बनाने की कोशिश करने की सामान्य अवधारणा।
उदाहरण के तौर पर, मेरा मुखौटा/सैंडबॉक्स में एक डोम विधि .find(selector)
है। मैं यह क्या वापस कर सकती है के लिए 3 विकल्प के बारे में सोच सकते हैं:
एक jQuery वस्तु - यह लेने वाली मॉड्यूल में बाहर jQuery का रिसाव करेगा।
एक कच्चा डोम तत्व - कार्यक्षमता का नुकसान, कोई भी वास्तव में इसके साथ काम करना नहीं चाहता! कोई चेनिंग नहीं
एक कस्टम jQuery-like wrapper - काफी जटिल हो सकता है, लेकिन आदर्श समाधान की तरह लगता है।
तो मेरे सवाल है, कैसे हैं आप सार बहुत अधिक कार्यक्षमता खोने के बिना jQuery की तरह एक पुस्तकालय, ऐसी है कि वह कम से कम प्रयास के साथ भविष्य में कुछ बिंदु पर बदला जा सकता है?
jQuery आंतरिक रूप से काफी जटिल है, जिससे एक अमूर्तता बनती है जैसे कि इसे किसी भी (या यहां तक कि एक) द्वारा प्रतिस्थापित किया जा सकता है, अन्य पुस्तकालय बेहद मुश्किल लगता है। और बात क्या है? यदि आपको लगता है कि आप भविष्य में पुस्तकालयों को स्वैप करना चाहते हैं, तो शायद आपको उस स्थान का उपयोग नहीं करना चाहिए जिसका आप पहले उपयोग कर रहे हैं। – RobG
@RobG मैं मानता हूं कि यह मुश्किल लगता है, यही कारण है कि मैं सवाल पूछ रहा हूं। हालांकि मेरे मुकाबले कहीं ज्यादा स्मार्ट लोग इन प्रस्तावों को बना रहे हैं और उनके लिए वैध कारण उपलब्ध करा रहे हैं (प्रदान की गई बातचीत के लिंक देखें)। –
निकोलस के आर्किटेक्चर में, यदि आप बेस लाइब्रेरी बदलते हैं, तो आपको एप्लिकेशन कोर को फिर से लिखना होगा। एक बार जब आप कोर से ऊपर हो जाते हैं, तो आप लाइब्रेरी का उपयोग करने वाले कोड को नहीं लिख रहे हैं। यदि आप jQuery का उपयोग कर रहे हैं, तो मॉड्यूल लिखने वाला व्यक्ति ** कोई ** jQuery नहीं लिखता है। – RobG