모듈

wh·2022년 4월 26일
0

모듈개념

모듈 module 은 프로그래머가 사용할수 있는 익스포트된 exported 기능(클래스, 함수, 다른값)을 제공한다. 익스포트되지 않은 모든 기능은 비공개로 모듈에 속한다. 모듈은 클래스, 함수, 값을 포함하는 상자일 뿐이다.

기본 import

import CaesarCipher from './modules/caesar.mjs'

명명 import

모듈은 기본기능 이외엔 명명된 기능도 임포트할 수 있다.

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' // 재익스포트시 이름변경

모듈패키징

기본 스크립트와 모듈의 차이점

  • 모듈코드는 엄격모드
  • 각 모듈은 자바스크립트 런타임의 전역범위와는 별개로 자신만의 최상위수준 범위를 가진다
  • 모듈을 여러번 로드하더라도 단 한번만 처리된다.
  • 모듈은 비동기로 처리된다.
  • 모듈은 import, export 문을 포함할 수 있다.

연습문제

profile
js

0개의 댓글

관련 채용 정보