개발 이야기/Node

모듈 Module - 2

석구석구 2022. 1. 10. 00:16

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