gurwhddl
코알못 공부블로그
gurwhddl
전체 방문자
오늘
어제
  • 분류 전체보기
    • CSS
    • JS
    • node.JS
    • REACT
    • 코딩테스트 연습

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
gurwhddl

코알못 공부블로그

node.JS

commonJs모듈

2023. 2. 15. 15:22

node 라는 폴더에 node.js라는 파일 안에

const a = 1 

const b = 1

라고 저장해놓고 이걸 다른 파일에서도 쓰고 싶다 - module로 지정해놓으면 됨

module.exports = {a,b} *모듈은 파일 하나당 한번밖에 못쓰기 때문에 여러개 보낼거면 객체나 배열같은걸로 묶으면 됨

다시 index.js에서 저 두 변수를 쓰고 싶다라고 하면 require(모듈 설정해놓은 파일 위치)라는 함수를 사용해주면 됨

const {a,b} = require('./node.js') // 구조분해할당으로 써줘도 되고 다르게 써줘도 됨

여기서 . -> 내가 지금 있는 이 파일 .. -> 부모 파일 이런식으로 올리가는거고 node.js에서 js는 생략 가능

module.exports === module (=== {})

exports.a = 1

exports.b = 1 해줘도 되긴하는데 module.exports랑 exports랑 원래는 같은 거라서 (빈 객체같은거) 잘못 넣게되면 두개가 같은 객체를 가리키는게 안되기 때문에(참조 관계가 깨짐) 그냥 쓸거면 하나만 쓰는걸로..

 

node에선 this도 좀 다름

this.js파일에서 실행

console.log(this); // 그냥 빈 객체만 나옴

function a() {
console.log(this === global); 
}

a(); // true

아까 위에서 빈 객체는 ? module.exports였음

한마디로 this === module.exports라는 소리

 

새 파일에 require('./index.js') 하게 되면 - 새 파일에서 저 index 파일을 실행시키겠다는 소리

여기에 const a = require('./index.js') 해줘야 모듈로 보내준 값들을 a에 저장한다는 소리임

어떤 파일에서든 require(this.js) 해주면 저 두개의 콘솔이 찍혀나오게 됨

require를 콘솔에 찍어보면 몇십줄이 뜨는데 여기서 main과 cache를 보면 됨

main - 내가 지금 실행하고 있는 파일

cache - 파일을 읽고 난 후에 캐시에 그 파일에 대한 정보를 저장해놓음 - 두 번째 불러올 때는 캐시에 저장된 메모리에서 불러옴(효율 측면에서 좋음)

 

 

1.js - require(2)

2.js - require(1) 이라고 해놓고 터미널에서 node 1 하게 되면

1에서 2읽고 - 다시 2에서는 1 읽고 - 1에서 2 읽고 ... 하는 순환참조가 일어남

그래서 이런 상황이 오면 노드에서는 순환참조를 막아주긴 함 -

modules.exports해서 내용 해놨어도 이걸 읽어오는 게 아니라 그냥 빈 객체를 막아줌

 

 

'node.JS' 카테고리의 다른 글

백준 9012. 스택 구현  (0) 2023.02.27
express 용어 정리  (0) 2023.02.27
코테연습 - 숫자 짝꿍  (0) 2023.02.12
코테연습 - 햄버거 만들기  (0) 2023.02.07
API  (0) 2023.01.13
    'node.JS' 카테고리의 다른 글
    • 백준 9012. 스택 구현
    • express 용어 정리
    • 코테연습 - 숫자 짝꿍
    • 코테연습 - 햄버거 만들기
    gurwhddl
    gurwhddl

    티스토리툴바