मुझे याद है कि जब मैंने कोडिंग शुरू की थी तो मैं मॉड्यूल और आयात का उपयोग करके अन्य फ़ाइलों को आयात करने के लिए require() का उपयोग करके कुछ js फ़ाइलें देखता था। इसने मुझे हमेशा भ्रमित किया क्योंकि मुझे वास्तव में समझ नहीं आया कि अंतर क्या था या परियोजनाओं में असंगतता क्यों थी। यदि आप भी यही सोच रहे हैं, तो पढ़ना जारी रखें!
CommonJS मानकों का एक सेट है जिसका उपयोग सर्वर-साइड जावास्क्रिप्ट, मुख्य रूप से Node.js वातावरण में मॉड्यूल को लागू करने के लिए किया जाता है। इस प्रणाली में, मॉड्यूल को समकालिक रूप से लोड किया जाता है, जिसका अर्थ है कि मॉड्यूल लोड होने तक स्क्रिप्ट निष्पादन अवरुद्ध है। यह एक सीधा दृष्टिकोण बनाता है, लेकिन यदि आप अलग-अलग मॉड्यूल के समूह में लोड करने का प्रयास कर रहे हैं तो नकारात्मक पक्ष एक प्रदर्शन हिट है क्योंकि कुछ भी चलाने से पहले उन्हें एक के बाद एक लोड करना होगा।
कॉमनजेएस का उपयोग करते समय आप कार्यक्षमता निर्यात करने के लिए मॉड्यूल.एक्सपोर्ट का उपयोग करेंगे और इसे आयात करने के लिए require() का उपयोग करेंगे।
यह कोड में कैसा दिखेगा इसका एक उदाहरण यहां दिया गया है।
// In file multiple.js module.exports = function multiply(x, y) { return x * y; };
// In file main.js const multiply = require(‘./multiply.js’); console.log(multiply(5, 4)); // Output: 20
ES6, जिसे ईसीएमएस्क्रिप्ट के रूप में भी जाना जाता है, जावास्क्रिप्ट का एक नया संस्करण है जिसे 2015 में जारी किया गया था। इस रिलीज के साथ आयात और निर्यात विवरणों का उपयोग करके अतुल्यकालिक रूप से मॉड्यूल आयात करने की क्षमता आई। इसका मतलब यह है कि आप जो स्क्रिप्ट चला रहे हैं वह मॉड्यूल लोड होने के दौरान निष्पादित होती रह सकती है ताकि कोई बाधा न हो। यह ट्री-शेकिंग नामक एक दक्षता की भी अनुमति देता है जिसे मैं बाद की पोस्ट में शामिल करूंगा, लेकिन मूल रूप से, इसका मतलब है कि आप केवल उस मॉड्यूल से जावास्क्रिप्ट लोड करते हैं जिसका आप उपयोग कर रहे हैं और डेड-कोड (कोड का उपयोग नहीं किया जा रहा है) लोड नहीं किया गया है ब्राउज़र में. यह सब संभव है क्योंकि ES6 स्थिर और गतिशील दोनों आयातों का समर्थन करता है।
यहां पहले का वही उदाहरण है लेकिन इस बार हम आयात और निर्यात का उपयोग कर रहे हैं।
// In file multiply.js export const multiply = (x, y) => x * y;
// In file main.js import { multiply } from ‘./multiply.js’; console.log(multiply(5, 4)); // Output: 20
require() CommonJS मॉड्यूल सिस्टम का हिस्सा है जबकि आयात ES6 मॉड्यूल सिस्टम का हिस्सा है। आप सर्वर-साइड विकास के लिए Node.js वातावरण में require() का उपयोग देखेंगे, मुख्य रूप से उन विरासत परियोजनाओं पर जिन्होंने अभी तक ES6 को नहीं अपनाया है। आप सर्वर-साइड और फ्रंटएंड डेवलपमेंट, विशेष रूप से नई परियोजनाओं और रिएक्ट या वीयू जैसे किसी भी फ्रंटएंड फ्रेमवर्क के साथ आयात का उपयोग देखेंगे।
जैसा कि हमने पहले बताया, आयात अतुल्यकालिक है, जिससे बेहतर प्रदर्शन हो सकता है, खासकर बड़े अनुप्रयोगों में। इसके अलावा, चूंकि आयात का सांख्यिकीय रूप से विश्लेषण किया जा सकता है, लिंटर और बंडलर जैसे उपकरण कोड को अधिक प्रभावी ढंग से अनुकूलित कर सकते हैं और ट्री शेकिंग को लागू कर सकते हैं जिससे बंडल आकार छोटे होते हैं और लोड समय तेज होता है। सिंटैक्स को require() की तुलना में पढ़ना भी आसान है जो एक बेहतर डेवलपर अनुभव प्रदान करता है, और हम सभी यही चाहते हैं!
आप require() का उपयोग तब करेंगे जब:
आप एक विरासती Node.js प्रोजेक्ट पर काम कर रहे हैं जो ES6 के आने से पहले शुरू किया गया था और अपडेट नहीं किया गया है।
आपको रनटाइम पर मॉड्यूल को गतिशील रूप से लोड करने की आवश्यकता है, जैसे कॉन्फ़िगरेशन फ़ाइल में, या यदि आपको सशर्त रूप से मॉड्यूल लोड करने की आवश्यकता है।
आप आयात का उपयोग तब करेंगे जब:
सामान्य तौर पर, जब भी संभव हो आयात का उपयोग करने की अनुशंसा की जाती है, क्योंकि यह अधिक लाभ प्रदान करता है और नया, अधिक व्यापक रूप से अपनाया गया मॉड्यूल सिस्टम है। हालाँकि, ऐसे मामले भी हो सकते हैं जहां आपकी विशिष्ट आवश्यकताओं और आप जिस वातावरण में काम कर रहे हैं, उसके आधार पर require() अभी भी बेहतर विकल्प है।
यदि आपको यह लेख उपयोगी लगा, तो मेरे न्यूज़लेटर की सदस्यता लें, जहां मैं साप्ताहिक आधार पर इस तरह की और सामग्री सीधे आपके इनबॉक्स में भेजूंगा!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3