2016 के बाद से जावास्क्रिप्ट दुनिया में बहुत कुछ बीत चुका है, इसलिए मेरा मानना है कि इस विषय पर सबसे अद्यतन जानकारी देने का समय है। वर्तमान में डायनेमिक आयात नोड और ब्राउज़र दोनों पर एक वास्तविकता है (मूल रूप से यदि आप IE के बारे में परवाह नहीं करते हैं, या @ बेबल / प्लगइन-सिंटैक्स-डायनेमिक-आयात के साथ यदि आप परवाह करते हैं)।
इसलिए, something.js
दो नामित निर्यात और एक डिफ़ॉल्ट निर्यात के साथ एक नमूना मॉड्यूल पर विचार करें :
export const hi = (name) => console.log(`Hi, ${name}!`)
export const bye = (name) => console.log(`Bye, ${name}!`)
export default () => console.log('Hello World!')
हम import()
सिंटैक्स का उपयोग आसानी से और सफाई से सशर्त रूप से लोड करने के लिए कर सकते हैं:
if (somethingIsTrue) {
import('./something.js').then((module) => {
module.hi('Erick')
module.bye('Erick')
module.default()
})
}
लेकिन जब से वापसी एक है Promise
, async
/ / await
सिंथेटिक चीनी भी संभव है:
async imAsyncFunction () {
if (somethingIsTrue) {
const module = await import('./something.js')
module.hi('Erick')
}
}
अब ऑब्जेक्ट विनाशकारी असाइनमेंट के साथ संभावनाओं के बारे में सोचें ! उदाहरण के लिए, हम बाद में उपयोग के लिए स्मृति में निर्यात नाम के केवल एक को आसानी से रख सकते हैं:
const { bye } = await import('./something.js')
bye('Erick')
या शायद उन नामित निर्यातों में से एक को हड़प लें और इसका नाम बदलकर हम चाहते हैं कि कुछ भी हो:
const { hi: hello } = await import('./something.js')
hello('Erick')
या यहां तक कि डिफॉल्ट एक्सपोर्ट किए गए फंक्शन को कुछ इस तरह से नाम दें कि अधिक समझ में आए:
const { default: helloWorld } = await import('./something.js')
helloWorld()
बस एक अंतिम (लेकिन कम से कम) नोट: import()
एक फ़ंक्शन कॉल की तरह लग सकता है, लेकिन यह नहीं है Function
। यह एक विशेष वाक्यविन्यास है जो सिर्फ कोष्ठक का उपयोग करने के लिए होता है (जैसा होता है वैसा ही होता है super()
)। इसलिए import
किसी चर को निर्दिष्ट करना या Function
प्रोटोटाइप की चीजों का उपयोग करना संभव नहीं है , जैसे call
/ apply
।
super
विशिष्ट कॉल करने के लिए उपयोग करें।