// 모듈 경로는 문자열만 허용되기 때문에 에러가 발생
import ... from getModuleName();
// 이래야 정상적으로 작동
import ... from getModuleName;
if(...) {
import ...; // 모듈은 조건부로 불러올 수 없으므로 에러 발생
}
{
import ...; // 블록 안에 올 수 없으므로 에러 발생
}
import {Module} from "./module";
import Module from "./mudule";
import * as Module from "./module";
const Module = await import("./module");
let modulePath = prompt("어떤 모듈을 불러오고 싶으세요?");
import(modulePath)
.then(obj => <모듈객체>)
.catch(err => <로딩에러, 해당하는 모듈이 없는 경우>)
export function hi() {
alert('hi!');
}
export function bye() {
alert('bye!');
}
export default fuction() {
alert('load export default module.');
}
<!doctype html>
<script>
async function load() {
let say = await import('./say.js');
say.hi(); // 안녕하세요.
say.bye(); // 안녕히 가세요.
say.default(); // export default한 모듈을 불러왔습니다!
}
</script>
<button onclick="load()">클릭해주세요,</button>
참고
- 동적으로 모듈 가져오기(https://ko.javascript.info/modules-dynamic-imports)
- Expert Default(https://www.youtube.com/watch?v=WUirHxOBXL4)