commonJS

백승용·2020년 11월 17일
0

exports = module.exports = {}
exports는 reference type으로 module.exports의 주소값을 가지고 있다. 그래서 A.js 파일에서

//A.js
let x = 10
exports.x = 20

다음과 같이 작성되었을 때 B.js에서 require로 불러와 x의 값을 확인하면 20이 된다.

//B.js
let A = require(A.js)
console.log(A.x) // 결과 : 20

A.js에서 exports나 module.exports 값을 넣어주지 않으면 A에는 빈 객체가 들어간다.
A.js에서 아무리 좋은 코드를 작성하더라도 exports하지 않으면 다른 js파일에서 사용하지 못한다.
그리고 es6의 destructuring을 사용하여 여러 개를 한번에 받을 수 있다. 예를 들어,

//A.js
let add = (x,y) => {
  return x + y
}

let sub = (x,y) => x - y

module.exports = {
	add,
  	sub
}

//B.js
let {add, sub} = require("./A.js")
console.log(add(1,2))
console.log(sub(3,1))

만약, destructuring을 사용하지 않고 require를 두번 사용했을 때는 A.js파일이 두번 불러와지는지 확인해보자

//A.js
console.log('hello~')

//B.js
let A = require("./A.js")
let AA = require("./A.js")

//결과 : hello~

결과는 한번만 불러오는 것을 확인할 수 있다. 그 이유는 A.js가 한번 불려져서 메모리에 저장되어 있기때문이다.

0개의 댓글