모듈 module 은 프로그래머가 사용할수 있는 익스포트된 exported 기능(클래스, 함수, 다른값)을 제공한다. 익스포트되지 않은 모든 기능은 비공개로 모듈에 속한다. 모듈은 클래스, 함수, 값을 포함하는 상자일 뿐이다.
import CaesarCipher from './modules/caesar.mjs'
모듈은 기본기능 이외엔 명명된 기능도 임포트할 수 있다.
import { encrypt, decrypt } from './modules/caesar.mjs'
기본기능이 아닌 기능을 이용할때는 반드시 중괄호를 이용한다.
이름 충돌 예방
import { encrypt as caesarEncrypt, decrypt as caesarDecrypt } from './modules/caesar.mjs'
기본기능과 명명된 기능 혼합 import
import CaesarCipher, { encrypt, decrypt } from './modules/caesar.mjs'
여러기능을 한객체에 담기
import * as CaesarCipherTools from './modules/caesar.mjs'
기본기능은 CaesarCipherTools.default 로 접근
기본기능의 이름을 바꾸며 import
import CaesarCipher, * as CaesarCipherTools from './modules/caesar.mjs'
위치가 고정되어 있지않은 모듈임포트를 지원, 즉시 모듈을 로딩하므로 어플리케이션 시작비용과 크기를 줄일수 있다.
import(`./plugins/${action}.mjs`)
.then(module => {
module.default()
module.namedFeature(args)
})
한개의 함수 또는 클래스만 export default 로 익스포트 할수 있다
export default { encrypt, Cipher, DEFAULT_KEY } // 여러기능을 포함한 객체
export { randInt, randDouble } from './modules/random.mjs' // 다른 기능을 재익스포트
export { randInt as randomInteger } from './modules/random.mjs' // 재익스포트시 이름변경
기본 스크립트와 모듈의 차이점