모듈(Module)이란?
분리된 하나의 파일을 모듈(module)이라고 부르는데, 모듈은 대게 클래스 하나 혹은 특정한 목적을 가진 여러개의 함수를 포함하는 라이브러리로 구성되어 있음.
장점
- 유지보수 용이 : 기능들이 모듈화가 잘 되어 있는 경우, 의존성을 줄일 수 있기 때문에 기능개선이나 수정에 용이
- 네임스페이스화 : 코드양이 많을수로 전역스코프에 중복되는 변수병이 존재할수 있음, 이때 모듈로 분리하면 네임스페이스를 갖기 때문에 문제를 해결할수 있음
- 재사용성 : 같은 코드를 반복하지않고 중복되는 코드를 모듈로 분리시켜 필요할때 마다 재사용할 수 있다.
모듈 시스템 종류
- AMD - 가장 오래된 모듈 시스템중 하나로 require.js라는 라이브러리를 통해 개발됨.
- CommonJS - NodeJS 환경을 위해 만들어진 모듈 시스템
- UMD - AMD와 CommonJS와 같은 다양한 모듈 시스템을 함께 사용하기 위해 만들어짐
- ES Module - ES6(ES2015)에 도입된 자바스크립트 모듈 시스템
ES Module방식
> ES6에 도입된 자바스크립트 모듈로 <script> 태그에 type="module" 속성을 추가해주면, 해당 파일은 모듈로서 동작.
모듈을 외부에서 사용할수 있도록 내보낼때는 export, export default 와 같은 키워드를 사용하며, 외부에서 모듈을 불러 올때는 import 를 사용하여 모듈을 불러온다.
- named export 를 사용하여 함수 또는 변수를 내보낼수 있음.
- export default 를 사용하여 하나 기본함수를 내볼수 있음. (단, 모듈 당 하나만 내보낼수있음)
CommonJS방식
> NodeJS 환경에서 자바스크립트 모듈을 사용하기 위해 만들어진 모듈 시스템. 모듈을 외부에서 사용할 수 있도록 내볼때는 export, module.export 와 같은 키워드를 사용하며, 외부에서 불러올때는 require 를 사용하여 모듈을 불러옴,
- module.export 를 사용하여 하나의 객체로 묶어서 외부로 내보낼 수 있음.
ES Module for NodeJS
CommonJs 모듈 시스템을 채택했던 NodeJS환경에서 ES Module을 사용하려면 babel과 같은 트랜스파일러(transpiler)를 사용했어야 하는데, NodeJS 13.2 버전부터 ES모듈 시스템에 대한 정식 지원이 시작됨으로서 별다른 도구 필요 없이 NodeJS에서 ES Module을 사용할수 있게 되었다고 함.
출처 : https://www.youtube.com/watch?v=5NXEXkIrkAk
'Front Dev' 카테고리의 다른 글
Regular expression jsp tag 검색 (0) | 2023.10.24 |
---|---|
front 개념정리 및 복기 (출처: 짐코딩 GYM CODING) (0) | 2022.09.05 |
JS Prototype (2) | 2022.07.11 |
유사한 name값 input 태그 활용 (feat. 체크박스응용) (0) | 2022.06.10 |
react.js 개념정리 (0) | 2021.03.04 |