자바스크립트 모듈(Module)

2020. 11. 21. 14:38·프로그래밍 언어/JavaScript

모듈(Module) 이란?

자바스크립트 코드의 크기가 갈수록 커지고 기능도 복잡해지면서 자바스크립트 커뮤니티는 코드 전체를 기능 단위의 코드 뭉치로 분해하고 필요에 따라 결합할 수 있도록 하는 시스템의 도입을 고민하였습니다. 그 결과 도입된 것이 바로 모듈 시스템(Module System)입니다. 이 때 사용되는 코드 뭉치 각각을 모듈(Module)이라고 합니다. 모듈은 대개 클래스 하나 혹은 특정한 목적을 가진 복수의 함수로 구성된 라이브러리 하나로 구성됩니다.

모듈 시스템은 2015년에 표준으로 등재되었습니다. 이 이후로 관련 문법은 진화를 거듭해 이제는 대부분의 주요 브라우저와 Node.js가 모듈 시스템을 지원하고 있습니다.

 

모듈 활용법

모듈에 특수한 지시자 export와 import를 적용하면 다른 모듈을 불러와 불러온 모듈에 있는 함수를 호출하는 것과 같은 기능 공유가 가능합니다.

  • export : 모듈 내보내기
  • import : 모듈 가져오기

1. named export

모듈을 내보내는 가장 쉬운 방법은 내보내려는 항목 앞에 export 지시자를 배치하는 것입니다. 그 항목이 변수인지, 함수인지, 클래스인지는 상관없습니다. 최상위 항목이기만 하다면 이 방법으로 모두 내보낼 수 있습니다. 이런 방법을 named export라고 합니다.

한 파일 내에서 여러 변수 / 클래스 등을 export 하는 것이 가능합니다.

export class Person { /* ... */ }
export class Job { /* ... */ }

다만, import 시 { } 안에다가 export 된 이름과 동일하게 설정해야 합니다.

import { Person, Job } from './MyClass'

다른 이름으로 import 할 수 있으나 아래처럼 as를 사용해야 한다.

import { Person as Human, Job } from './MyClass'

 

import * as Im from './MyClass'
// 이렇게 import 하면 Im.Person 이런 식으로 사용해야 합니다.

2. default export

대개는 한 파일에서 하나의 개체만 모듈로 넘기는 방식을 선호합니다. 그에 맞춰 유용하게 쓰이는 것이 default export 입니다. 내보내는 방법은 크게 다르지 않습니다. 위의 방식에서 export 뒤에 default만 더해주면 됩니다.

default 로 선언된 모듈은 하나의 파일에서 단 하나의 변수 또는 클래스만 export 할 수 있습니다.

const Authentication = () => {
  // ...
}

export default Authentication

import 할 때는 아무 이름으로나 import 가능합니다.

즉, 

import Authentication from '../AuthenticationPage'

또는

import ThisIsNotAuthentication from '../AuthenticationPage'

 

var, let, const 를 바로 export default 할 수 없습니다.

// 이렇게 하면 안됩니다
export default const MY_NAME = "chanPark"


정리해보면,

named export 는 여러 값을 내보낼 때 유용합니다. 가져올 때는 내보낼 때와 동일한 이름을 사용하거나, import { name as newName } 구문을 사용해야 합니다.

default export 는 한 파일에서 하나의 개체만을 내보낼 수 있으며 어떤 이름으로도 가져올 수 있습니다.

 

 

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

Generator  (0) 2020.11.23
JavaScript와 Iterator  (0) 2020.11.23
Node와 Element  (0) 2020.11.22
DOM, CSSOM, BOM은 무엇일가?  (0) 2020.11.22
sort 함수를 이용한 정렬  (0) 2020.11.09
'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • JavaScript와 Iterator
  • Node와 Element
  • DOM, CSSOM, BOM은 무엇일가?
  • sort 함수를 이용한 정렬
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • k8s (2)
      • AWS (1)
      • 리눅스 (5)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    조인
    컨테이너
    도커
    typescript
    FastAPI
    리눅스
    모듈
    생활코딩
    레벨2
    typeorm
    스택
    redis
    nestjs
    django
    반복문
    javascript
    Docker
    IP 주소
    자바스크립트
    코딩테스트
    프로그래머스
    기초
    배열
    네트워크
    Til
    Kubernetes
    iterable
    mysql
    Python
    Kubectl
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
자바스크립트 모듈(Module)
상단으로

티스토리툴바