Node에서는 CommonJS 모듈 시스템을 사용했었다.
물론 13.2 버전부터는 특별한 옵션 없이도 ES6의 모듈 시스템을 사용할 수 있다.
하지만 여전히 많은 모듈들이 CommonJS의 형태로 이루어져 있으므로 사용 예시를 통해 가볍게 살펴보기로 하자.
function Calc() {
function add(a, b) {
return a+b
}
return {
add
}
}
module.exports = Calc
const calc = require('./calc')
모듈을 로딩하는 종류에는 몇 가지 경우가 있다.
코어 모듈 로드
const http = require('http')
노드가 미리 준비해둔 모듈을 코어 모듈이라 하며, 우선적으로 로드 된다.
파일 모듈 로드
const myModule = require('./mymodule')
사용자가 만든 모듈 파일을 로드할 수 있다.
폴더 모듈 로드
const myModule = require('./myModuleDir')
폴더 경로를 사용해 모듈을 로드할 때는 해당 폴더가 패키지 형태여야 한다.
package.json이 없다면 index.js를 로드하고, 있다면 해당 package.json의 main 값을 참조하여 파일을 로드하게 된다.
node_modules 폴더를 통한 로드
모듈명이 상대경로도 아니고, 코어 모듈도 아닌 경우 node_modules 폴더에서 모듈을 찾는다. npm을 통해 설치된 모듈이 해당된다.
모듈 캐싱
console.log('module initial')
function myModule(){
console.log('mymodule')
}
module.exports = myModule
개발자가 require를 이용해 위 모듈을 여러번 이용하더라도 'module initial'은 단 한번 밖에 실행되지 않는다. 모듈을 만들 때, 반드시 기억해야 한다.
'개발 이야기 > Node' 카테고리의 다른 글
이벤트 구독 패턴 EventEmitter - 4 (0) | 2022.01.10 |
---|---|
버퍼 Buffer - 3 (0) | 2022.01.10 |
노드 NodeJS - 1 (0) | 2022.01.09 |
NodeJS + Typescript + Mongoose (0) | 2020.02.25 |