The Web Developer 부트캠프 2022

Node js 모듈과 NPM

거위발바닥 2022. 9. 28. 22:03

Require

기존에 있던 fs 모듈이 아닌 다른 모듈을 require로 가져올때는

const math = require('./math'); // math라는 js파일을 가져온다
console.log(math);
console.log(math.add(1, 2)); // 강의와는 다르게 앞에 math를 붙혀야지 add 변수를 인식한다

`./math`처럼 ./를 붙혀서 정확하게 명시해야한다.

하지만 저렇게 해도 파일이 비어있다고 에러가 나는데, 그 이유는 import를 사용해서 무엇을 보내 줄 것인지

정확한 명시가 필요하기 때문이다.

const { add, PI } = require('./math');
console.log(add(1, 2));
console.log(PI);

위의 const { add, PI } 처럼 분해를 할 수도 있다. 

 

Import

const add = (x, y) => x + y;
const PI = 3.14;

module.exports.add = add;
module.exports.PI = PI;

해당 js는 위에서 말한 math.js 인데, 이렇게 module.exports 객체에 설정을 해줘야 한다.

exports.add = (x, y) => console.log(x + y);
exports.PI = 3.14;

일반적으로 해당 방법도 많이 사용한다.

 

index.js

index.js는 디렉터리에서 특별히 그 폴더의 js를 대표하는 역할을 해준다.

module.exports = {
    name: 'saide',
    color: 'green'
}

module.exports = {
    name: 'janet',
    color: 'orange'
}

module.exports = {
    name: 'blue',
    color: 'gray'
}

// 각각의 saide.js, janet.js, blue.js 에 해당 코드를 작성해준다
const blue = require('./blue');
const janet = require('./janet');
const saide = require('./saide');

const allCats = [blue, janet, saide];
module.exports = allCats;

위 코드는 index.js로 각각 blue.js .... 를 require로 받고 allCats이라는 변수로 묶은다음 exports 해준다.

const allCats = require('./shelter'); // index.js는 shelter 폴더 안에 있다.

console.log(allCats);

이후 다른 js 파일에서 해당 index.js에서 exports한 allCats를 받을때 해당 파일이 아닌 디렉터리를 지정했을때,

index.js가 대표로 해당 폴더에 있는 js로 지정되어 require를 받는다. 

노드로 해당 js를 실행시키면 

각 blue, janet, saide의 정보가 나온다.