[개정3판] Node.js 교과서 - 20강. exports, this, require, 순환참조

_·2023년 10월 10일

module.exports

1. module.exports 외에도 exports로 모듈을 만들 수 있음

모듈 예제의 var.js를 다음과 같이 바꾼 후 실행
동일하게 동작함
동일한 이유는 module.exports와 exports가 참조 관계이기 때문
exports에 객체의 속성이 아닌 다른 값을 대입하면 참조 관계가 깨짐
module.exports는 한 가지만 리턴할 때 쓰고, exports는 두 개 이상 리턴할 때 쓴다. exports와 module.exports는 같이 쓸 수 없다.

this

1. 노드에서 this를 사용할 때 주의점이 있음

최상위 스코프의 this는 module.exports를 가리킴
그 외에는 브라우저의 자바스크립트와 동일
함수 선언문 내부의 this는 global(전역) 객체를 가리킴

require의 특성

1. 몇 가지 알아둘 만한 속성이 있음

require가 제일 위에 올 필요는 없음
require.cache에 한 번 require한 모듈에 대한 캐쉬(cache) 정보가 들어있음.
require.main은 노드 실행 시 첫 모듈을 가리킴. 어떤 파일을 실행시킨건지 알 수 있다.

main과 cache를 알아두면 됨

순환 참조 주의

1. 모듈 A가 B를 require하고, B가 다시 A를 require 하는 경우

무한 반복을 막기 위해 순환 참조 대상이 빈 객체가 됨

0개의 댓글