JavaScript 모듈을 정의하고 사용하는 두 가지 주요 방식이다.
CommonJS
module.exports 객체를 이용하여 자신의 데이터를 외부로 내보낼 수 있고, require() 함수를 이용하여 외부 모듈의 데이터를 불러올 수 있다.
// 내보내기
...
module.exports = CustomError;
// 가져오기
const CustomError = require("../error.js");
내보낸 객체는 복사본으로 처리된다. 즉, 모듈을 가져올 때 모듈의 복사본이 생성되며, 원본 모듈에 대한 변경이 가져온 모듈에 영향을 미치지 않는다.
ES6 Modules
ES6 Modules은 ECMAScript 2015(ES6)에 도입된 공식 JavaScript 모듈 시스템이다.
// 내보내기
...
export class BoardsModule { }
// 가져오기
import { BoardsModule } from './boards/boards.module';
내보낸 객체는 라이브 바인딩 된다. 즉, 모듈을 가져올 때 원본 모듈에 대한 참조가 생성되고, 원본 모듈의 변경이 가져온 모듈에도 실시간으로 반영되는 것이다.
위에는 express를 사용했을 때였고 밑에는 nestJS를 사용했을 때로 이해할 수 있었다.
'오늘 뭐했냐 > 개발에 대한 주저리' 카테고리의 다른 글
23.10.20 (JS에서의)this (0) | 2023.10.20 |
---|---|
23.10.19 가비지 컬렉션 (0) | 2023.10.19 |
23.10.14 프로토타입 (0) | 2023.10.16 |
23.10.13 태스크 큐 (0) | 2023.10.16 |
23.10.12 이벤트 루프 (0) | 2023.10.15 |