모듈? | 분리된 파일 일반적으로, 클래스 하나 혹은 복수의 함수로 구성된 라이브러리 하나로 구성 |
---|---|
export | 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근 가능 |
import | 외부 모듈의 기능을 가져옴 |
export
붙이기배열 내보내기
*export* let months = ['Jan', 'Feb', 'Mar','Apr', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
상수 내보내기
*export* const MODULES_BECAME_STANDARD_YEAR = 2015;
클래스 내보내기
*export* class User {
constructor(name) {
this.name = name;
}
}
export
붙이기function sayHi(user) {
alert(`Hello, ${user}!`);
}
function sayBye(user) {
alert(`Bye, ${user}!`);
}
export {sayHi, sayBye}; // 두 함수를 내보냄
import{...}
작성import {sayHi, sayBye} from './say.js';
sayHi('John'); // Hello, John!
sayBye('John'); // Bye, John!
export default
를 사용하여 ‘해당 모듈엔 개체가 하나만 있다’는 사실을 명확히 나타냄 (예시 참고)export default class User { // export 옆에 'default'를 추가됨
constructor(name) {
this.name = name;
}
}
export default
를 사용하면 중괄호 {} 없이 import
가능 (예시 참고, 위 import 사용법과 비교) ```jsx
import User from './user.js'; // {User}가 아닌 User로 클래스를 가져옴
new User('John');
```
💢 default export는 가져오기 할 때 내보내기 한 이름과 똑같아야 한다는 제약이 없음, 비슷하게 이름을 지으면 혼란의 여지 O