모듈이란
js파일 하나에 들어있는 내용이 많아서 분리하게 될 때, 여러 개로 분리한 각각의 파일을 모듈이라고 부른다.
대부분의 브라우저에서 지원되지만, 인터넷 익스플로러에서는 지원되지 않으니 주의. 그리고 모듈은 로컬에서 동작하지 않는다. 로컬 실행 시 라이브 서버 등을 이용할 것.
자바스크립트에서는 일반적인 스크립트 파일과, 불러오기가 가능한 모듈 파일의 타입을 달리 하고 있다.
//스크립트 파일
<script type="script" src="main.js"></script>
//모듈 파일
<script type="module" src="hello.js"></script>
모듈 파일은 export 를 사용해 파일 내부의 함수를 외부로 내보낸다.
//hello.js
export function hello(name){
console.log(`hello, world! I'm ${name}!`);
}
모듈 파일을 불러올 때는 import 를 사용한다. 불러오는 함수는 중괄호 안에 묶는다.
//main.js
import {hello} from './hello.js'; //모듈의 함수 불러오기
hello('Lily'); // Hello, world! I'm Lily! 콘솔에 출력
일반 스크립트 파일과의 차이점
- 항상 엄격 모드(use strict)로 실행됨.
- 모듈은 스코프가 별개로, 모듈 내부에서 정의한 변수나 함수를 다른 스크립트에서 접근할 수 없음. export, import를 이용해야한다.
- 같은 모듈이 여러 곳에서 사용되어도, 모듈은 최초 호출 시 단 한번만 실행됨.
- 브라우저 환경에서 일반 스크립트보다 항상 지연 실행됨. 따라서 모듈 스크립트는 HTML문서가 완전히 만들어진 이후에 실행됨.
참고 자료
MDN Docs https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Modules
코어 자바스크립트 https://ko.javascript.info/modules-intro
'웹 > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트로 캔버스 제어하기 - 스타일 저장 & 불러오기 (save와 restore) (0) | 2022.03.20 |
---|---|
[JavaScript] 자바스크립트로 캔버스 제어하기 - 2d 그래픽 그리기 (0) | 2022.03.19 |
[JavaScript] 자바스크립트의 클래스 (0) | 2022.03.13 |
[JavaScript] 자바스크립트에서 변수 이름 앞에 오는 달러($), 언더바(_) (0) | 2022.03.12 |
[JavaScript] 자바스크립트 클로저 (0) | 2022.03.06 |