DanLevy.net

ESM निर्यात: नामित बनाम डिफ़ॉल्ट?

नाम रखें,या न रखें?

Hero image for ESM निर्यात: नामित बनाम डिफ़ॉल्ट?

क्या आपको JavaScript में named या default एक्सपोर्ट्स का उपयोग करना चाहिए?

इस विषय पर बहुत सारे तीखे लेख मौजूद हैं।

बहुतेर लोग default export को “भयानक” मानते हैं। अन्य लोग मानते हैं कि default को प्राथमिकता मिलनी चाहिए (जैसे AirBnb स्टाइल गाइड)।

वे अक्सर पूरी तरह अस्थायी चीज़ों को दोष देते हैं: IDE ऑटो‑इम्पोर्ट बग, किसी विशेष बंडलर की ट्री‑शेकिंग क्षमता, या इम्पोर्ट का नाम रखने पर टाइपो की संभावना।

क्या हमने शुरू में ही export करने का मकसद ही भूल गए हैं?

कोड एक संचार है। ✨

हम import करने वालों को यह संकेत भेज रहे हैं कि किस तरह से किसी चीज़ का उपयोग करें

तो, हम क्या कह रहे हैं?

व्यापक रूप से देखें तो, आधुनिक जावास्क्रिप्ट में चीज़ें एक्सपोर्ट करने के दो तरीके हैं:

बिल्कुल, आप दोनों को मिलाकर उपयोग कर सकते हैं, या अपने कोडबेस के विभिन्न हिस्सों के लिए अलग‑अलग दृष्टिकोण अपना सकते हैं। लेख के अंत में और उदाहरण देखें।

कमजोर तर्क, दोस्त?

चलोउन सामान्य “अस्थायी समस्याओं” पर नज़र डालते हैं जिनका सामना लोग अक्सर करते हैं।

// आप दोनों का उपयोग करके उपनाम दे सकते हैं!
import { Knife as Handle } from "./knife.js"; // 🔪
import { default as Handle } from "./knife.js"; // 🔪
import Handle from "./knife.js"; // 🔪

सारांश

वास्तव में कई संयोजन हैं जिनसे हम चीज़ों को एक्सपोर्ट कर सकते हैं, प्रत्येक अलग कहानी बताता है:

Default (Exports)Named (Exports)Private FnsPatternMeaning
एक डिफ़ॉल्ट एक्सपोर्ट।“एक फ़ंक्शन के साथ एकल उद्देश्य प्रस्तुत कर रहे हैं!”
एक नेम्ड एक्सपोर्ट।“कृपया मेरा नाम बदलें नहीं।”
डिफ़ॉल्ट एक्सपोर्ट + कई ‘प्राइवेट’ अनएक्सपोर्टेड फ़ंक्शन“यहाँ कुछ संबंधित लॉजिक है। साथ ही, क्लास‑जैसा व्यवहार भी अपेक्षित है।”
कई नेम्ड एक्सपोर्ट्स, सामान्य फ़ाइलनाम।“ढीले तौर पर संबंधित चीज़ों का एक बकस, कोई पदानुक्रम नहीं।”
एकल नेम्ड एक्सपोर्ट भी डिफ़ॉल्ट के रूप में एक्सपोर्ट किया गया।“आप मुझे इम्पोर्ट करने में गलती नहीं कर सकते।”

सोचने के लिए बात: जब फ़ाइलनाम किसी एक्सपोर्ट से मेल खाता है या नहीं, तो हम क्या कह रहे हैं? (उदाहरण के तौर पर, कई फ़ंक्शन वाले utils.js.)

निष्कर्ष

अगर कोड संचार है, तो कृपया export को पूरी ताकत से करें। 💞