[Node.js] 모듈

민수·2022년 12월 8일
0
post-thumbnail

모듈

한 파일에 모든 코드를 적으면 가독성이 떨어진다.
코드 오류 추적도 힘들고 협업도 힘들어 진다.

그래서 파일을 규칙에 맞게 파일을 쪼갠다.

모듈이라는 뜻은 우리가 구현하려는 프로그램에 있어서 작은 단위를 의미한다.
Node.js에서는 Javascript 파일 하나를 하나의 모듈이라 생각할 수 있다.
모듈이 모여서 하나의 프로그램이 된다.

모듈 사용 방법

작성할 파일 목록

📦module
 ┣ 📜buy.js
 ┗ 📜car.js

사용할 모듈을 작성해 줘야 한다.
아래와 같이 배열에 담긴 객체여도 되고 함수여도 된다.

car.js

const suv = [
  {
    name: "컬리넌",
    brand: "롤스로이스",
    price: 46900,
  },
  {
    name: "R1S",
    brand: "리비안",
    price: 8562,
  },
  {
    name: "모델 Y",
    brand: "테슬라",
    price: 10473,
  },
]

원래 다른 파일에 있는 데이터는 공유가 되지 않는다.
서로 다른 파일을 실행하는 경우 프로세스가 다르기 때문이다.
다른 프로세스간에는 데이터 공유가 되지 않는다.

데이터를 다른 파일에 공유하고 싶다면 아래 코드를 이용해 공개해 주면 된다.

방식 1

exports.car = suv

방식 2

module.exports = suv

공개된 데이터를 받으려면 다음과 같이 코드를 작성해 주면 된다.

buy.js

const car = require('./car.js')

공개하는 방식에 따라 공유된 데이터를 이용하는 방식이 다르다.

방식1로 공개한 경우

console.log(car);
console.log(car.car);


방식2로 공개한 경우

console.log(car)

exports와 module.exports

car.js

const suv = [
  {
    name: "컬리넌",
    brand: "롤스로이스",
    price: 46900,
  },
  {
    name: "R1S",
    brand: "리비안",
    price: 8562,
  },
  {
    name: "모델 Y",
    brand: "테슬라",
    price: 10473,
  },
];

// exports.car = suv;

console.dir(exports);
console.dir(module);

exports 객체와 module 객체의 exports 프로퍼티는 동일한 객체를 가리키고 있다.
Node.js는 require 함수가 실행될 때 module 객체의 exports 프로퍼티가 가리키는 객체를 리턴해 준다.

주의할 점

데이터를 공개할 때 exports = 값으로 공개하게 되면 exports가 가리키는 객체가 달라지게 되어서 다른 파일에서 사용할 수가 없게 된다.

exports.속성 = 값
module.exports = 객체||값
module.exports.속성 = 값
위와 같은 방식으로 사용하자!

0개의 댓글