프로젝트의 규모가 커지다보니 한 파일에 수 천만의 코드라인이 생기기도 했습니다. 이에 JS 코드를 수많은 파일/폴더에 저장하고 효율적으로 불러올 수 있는 시스템이 필요해졌고, 2015년(ES6)에 모듈 시스템이 등장하게 되었습니다.
모듈(module)
모듈 : 프로그램 구성 요소. 관련된 data, function 등을 하나로 묶은 단위 |
모듈형 주택, 모듈형 핸드폰 등 일상생활에서 '모듈'이라는 단어는 많이 들어보셨을 겁니다. 미리 지어진 방, 거실, 화장실을 이어 만든 주택이나 미리 만들어놓은 배터리, OS칩, 카메라 등을 붙여 만든 핸드폰. 짐작하셨듯이 모듈의 특성은 다음과 같습니다.
- 어떠한(웬만하면 하나의) 기능이나 정보를 가지고 있다.
- 그 자체로 완성된 기능이지만, 완성품의 부속물이다.
- 수정이 쉽다.
- 재활용(프로그래밍에서는 감가상각 없는 재사용)이 가능하다.
특히 JavaScript에서의 모듈은 다음과 같은 특성을 가지고 있습니다.
- import, export 구문으로 사용할 수 있습니다.
- 모듈 간의 같은 변수명을 써도 충돌하지 않는다. (변수명이 모듈 스코프에 한정된다.)
다음은 사진 한 장으로 import와 export를 사용한 JS modules 를 알아보겠습니다. 다음은 모듈을 사용하는 대표적인 예로, 모듈의 다른 사용법은 추후 다시 다뤄보도록 하겠습니다.
import / export
1. default
sum.js는 num1과 num2를 받아 그 합을 return하는 함수모듈입니다.
default는 모듈 개체가 단 1개일 때 사용합니다. 예제와 같이 하나의 함수, 하나의 리턴값이 존재합니다.
이 때는 심지어 sum이라는 함수 이름도 필요 없습니다.
export default function (num1, num2){ //심지어 sum이 없어도 동일한 결과가 나온다.
return num1 + num2;
}
import 할 때도 함수 이름을 가져올 필요가 없습니다. 제가 원하는 대로(plus처럼) 이름을 가져와도 작동합니다.
2. named
모듈 개체가 2개 이상일 때는 default를 사용할 수 없습니다. default와 달리 변수명, 함수이름도 그대로 가져와야 합니다. (게다가 가져올 때 중괄호{}가 필요하죠.) 만약 이름을 가져오고 싶지 않고 새로 사용하고 싶다면 'as'를 사용하면 됩니다.
import { intro, sum as plus } from "./intro.js" // as를 사용하면 새로 변수명을 쓸 수 있다.
console.log(intro)
console.log(plus(2,3))
'Front-End > JavaScript' 카테고리의 다른 글
#05. [JS] Object Destructuring - 객체를 분해(추출)해보자. (0) | 2023.02.21 |
---|---|
#04. [JS] Destructuring : 파괴하다? 추출하다! (2) | 2022.12.03 |
#03. [JS] ES6 최신문법 (0) | 2022.11.26 |
#01. [JS] 변수(Variable)와 호이스팅(Hoisting) (0) | 2022.11.19 |
#00. JavaScript는 인터프리터 언어? (0) | 2022.11.16 |