Module.exports, this , require

Soony·2023년 9월 5일
0

Node.js

목록 보기
4/7
post-thumbnail

Module.exports

다른 파일에서 해당 모듈의 내용을 가져올 수 있게 하는 법 (module.exports)

const data1 = "This is data1"
const data2 = "This is data2"

module.exports { data1, data2}

exports한 모듈을 가져오는 법 (require)

const {data1, data2} = require("해당 파일 경로")
구조 분행 할당을 할 경우 위와 같이 변수명이 같아야 하지만 그게 아닌 경우 같지 않아도 된다.

한가지만 exports 하고 싶을 때는 module.exports를 사용하고

두개 이상을 exports 하고 싶은 경우는

exports.data1 = data1;
exports.data2 = data2;
또는
module.exports = {
data1,
data2
}

exports.data1 = data1;
exports.data2 = data2;
module.exports={}; 해버리면 위에 참조관계가 끊켜서 위에 것들이 무시된다.
이 둘은 같이 사용할 수 없다.

노드의 this

노드에서 this를 사용할 때 주의해야 한다.

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

그러므로

const data1 = "data1";
const data2 = "data2";
exports.data1 = data1;
exports.data2 = data2;

const data1 = "data1";
const data2 = "data2";
this.data1 = data1;
this.data2 = data2;

이렇게도 가능하다.

노드의 require

require.main을 console.log로 찍어보면 어떤 파일을 실행했는지 알아낼 수 있다.

require.cache는 한번 require 된 파일들을 캐시에 저장해두고 불러오기 때문에 빠르다.

require 할 때 순환참조 하는 상황이 나오지 않도록 하는게 좋음

두개의 모듈이 서로를 require하는 상황을 조심하자.

profile
한걸음씩

0개의 댓글