Seit 2016 ist in der JavaScript-Welt viel vergangen, daher glaube ich, dass es Zeit ist, die aktuellsten Informationen zu diesem Thema anzubieten. Derzeit sind dynamische Importe sowohl auf Knoten als auch in Browsern Realität (nativ, wenn Sie sich nicht für den Internet Explorer interessieren, oder mit @ babel / plugin-syntax-dynamic-import, wenn Sie sich dafür interessieren).
Stellen Sie sich also ein Beispielmodul something.js
mit zwei benannten Exporten und einem Standardexport vor:
export const hi = (name) => console.log(`Hi, ${name}!`)
export const bye = (name) => console.log(`Bye, ${name}!`)
export default () => console.log('Hello World!')
Wir können die import()
Syntax verwenden, um sie einfach und sauber unter bestimmten Bedingungen zu laden:
if (somethingIsTrue) {
import('./something.js').then((module) => {
module.hi('Erick')
module.bye('Erick')
module.default()
})
}
Da die Rückgabe jedoch a ist Promise
, ist auch der async
/ await
syntaktische Zucker möglich:
async imAsyncFunction () {
if (somethingIsTrue) {
const module = await import('./something.js')
module.hi('Erick')
}
}
Denken Sie jetzt über die Möglichkeiten zusammen mit der Objektzerstörungszuweisung nach ! Zum Beispiel können wir einfach nur einen der genannten Exporte für die spätere Verwendung im Speicher ablegen:
const { bye } = await import('./something.js')
bye('Erick')
Oder greifen Sie zu einem der genannten Exporte und benennen Sie ihn in etwas anderes um, das wir wollen:
const { hi: hello } = await import('./something.js')
hello('Erick')
Oder benennen Sie die exportierte Standardfunktion in etwas Sinnvolleres um:
const { default: helloWorld } = await import('./something.js')
helloWorld()
Nur eine letzte (aber nicht zuletzt) Anmerkung: import()
Sieht vielleicht aus wie ein Funktionsaufruf, ist aber keine Function
. Es ist eine spezielle Syntax, bei der nur Klammern verwendet werden (ähnlich wie bei super()
). Es ist also nicht möglich, import
einer Variablen zuzuweisen oder Dinge des Function
Prototyps wie call
/ zu verwenden apply
.
super
, um bestimmte anzurufen.