module.exports에 대한 생각

어떻게 쓰는게 올바르게 쓰는건가?

Posted by surin01 on July 09, 2021 · 1 min read

module.exports에 대한 이해

사진 한장으로 설명하기

설명

모듈을 불러오는 순서

모듈에 관한 공식 링크

LOCATION 라는 경로의 모듈에서 require(MODULE)을 했을때, 의사코드로 나타낸 동작 방식 링크

  1. node_modules 폴더에서 MODULE을 찾는다
  2. MODULES가 ./나 혹은 ../으로 시작하는 경우
    • load_as_file(LOCATION+MODULE)을 시도
    • load_as_directory(LOCATION+MODULE)을 시도
  3. load_node_modules(MODULE, dirname(LOCATION)) 을 시도

-> 3 까지의 시도에도 없을 경우, not found 리턴

모듈을 불러오는 방식

  1. 모듈에서 module.exports라는 객체의 자손으로 펑션들을 넣어주고,
  2. 모듈을 사용할 곳에서 require로 exports 객체를 불러와서 저장한 펑션들을 사용

끝!!!

추가로 덧붙여서,

function a(){};
function b(){};
module.exports.aa = aa;
module.exports.bb = bb;

나,

function a(){};
function b(){};
module.exports = {
    aa,
    bb
};

이거나,

function a(){};
function b(){};
module.exports = {
    "aa" : aa,
    "bb" : bb
}

이것도,

function a(){};
function b(){};
module.exports = {
    aa : aa,
    bb : bb
}

는 다 같은 방법을 의미하는 것이다.

주의할 사항

require로 불러온 모둘은 계속 캐싱된다. 그래서 여러번 호출해도 같은 객체를 반환한다