2016'dan beri JavaScript dünyasında çok şey geçti, bu yüzden bu konuyla ilgili en güncel bilgileri sunmanın zamanının geldiğine inanıyorum. Şu anda Dinamik ithalatı bir gerçeklik vardır hem Düğümünde ve tarayıcılarda (IE umurumda değil doğal halinde ya ile @ babel / eklenti-sözdizimi-dinamik-ithalat Umurunda varsa).
Bu nedenle, something.jsiki adlandırılmış dışa aktarma ve bir varsayılan dışa aktarma içeren örnek bir modül düşünün :
export const hi = (name) => console.log(`Hi, ${name}!`)
export const bye = (name) => console.log(`Bye, ${name}!`)
export default () => console.log('Hello World!')
import()Koşullu olarak kolayca ve temiz bir şekilde yüklemek için sözdizimini kullanabiliriz :
if (somethingIsTrue) {
import('./something.js').then((module) => {
module.hi('Erick')
module.bye('Erick')
module.default()
})
}
Ancak dönüş a Promiseolduğu için async/ awaitsözdizimsel şeker de mümkündür:
async imAsyncFunction () {
if (somethingIsTrue) {
const module = await import('./something.js')
module.hi('Erick')
}
}
Şimdi Nesne Yok Etme Ödevi ile birlikte olasılıkları düşünün ! Örneğin, posterior kullanım için bu adlandırılmış dışa aktarmalardan yalnızca birini belleğe kolayca koyabiliyoruz:
const { bye } = await import('./something.js')
bye('Erick')
Ya da belki dışa aktarma adı verilenlerden birini alıp, istediğimiz başka bir şeyle yeniden adlandırın:
const { hi: hello } = await import('./something.js')
hello('Erick')
Veya varsayılan olarak dışa aktarılan işlevi daha mantıklı bir şekilde yeniden adlandırın:
const { default: helloWorld } = await import('./something.js')
helloWorld()
Son (ama en önemlisi) not: import() bir işlev çağrısı gibi görünebilir, ancak bir Function. Parantezlerin kullanıldığı özel bir sözdizimidir (ne olduğuna benzer super()). Dolayısıyla import, bir değişkene atamak veya Functionprototipin call/ gibi şeyleri kullanmak mümkün değildir apply.
superözel aramak için kullanın .