2016 년 이후 자바 스크립트 세계에서 많은 것이 통과되었으므로이 주제에 대한 최신 정보를 제공 할 때라고 생각합니다. 현재 동적 가져 오기 는 노드 와 브라우저 모두 에서 현실입니다 (기본적으로 IE에 관심이 없다면 @ babel / plugin-syntax-dynamic-import를 사용하세요).
따라서 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')
}
}
이제 Object Destructuring Assignment 와 함께 가능성에 대해 생각해보십시오 ! 예를 들어, 사후 사용을 위해 이름이 지정된 내보내기 중 하나만 메모리에 쉽게 넣을 수 있습니다.
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
특정 전화에 사용 하십시오.