require로 외부 라이브러리 불러올 때 Destructuring{ }으로 필요한 함수/객체만 가져오기

Alex J. Lee·2021년 9월 1일
2

JS

목록 보기
2/4

exports & require

index.js에서 calculate이라는 패키지를 불러와 사용하고 싶다고 생각해 봅시다.

calculate 패키지 안에는 calculate.js라는 파일이 다음과 같이 있습니다.

// calculate.js
function add(a, b) {
  return a + b;
}
function subtract(a, b) {
  return a - b;
}
function divide(a, b) {
  return a - b;
}
function multiply(a, b) {
  return a + b;
}

exports.add = add;
exprots.subtract = subtract;
exports.divide = divide;
exports.multiply = multiply;

calculate.js 안에는 add. subtract, divide, multiply라는 함수가 있고 calculate.js 밖에서도 사용할 수 있도록 모두 exports 객체에 담아주고 있습니다. 이렇게 export된 함수들을 불러와 사용하려면 require를 사용해 주어야 합니다.

// index.js
const calc = require('calculate');

변수 calc에 calculate.js에서 export해 주었던 모든 함수들이 담겨 있습니다. 이를 사용하려면 아래와 같이 할 수 있습니다.

// 22에 11을 더한 값 구하기
calc.add(22, 11);
// 22에서 11을 뺀 값 구하기
calc.subtract(22, 11);
// 22를 11로 나눈 값 구하기
calc.divide(22, 11);
// 22에 11을 곱한 값 구하기
calc.multiply(22, 11);

그런데 만약 4가지 함수 모두가 아닌 add함수 만 필요하다면 어떻게 할 까요? 그럴 경우 객체 Destructuring을 사용해 add함수만 불러 올 수 있습니다. (구조분해할당(Destructuring)).

const { add } = require('calculate');
// calculate에서 제공하는 add, subtract, divide, multiply 함수 중 add 함수만 가져와 사용한다.

// 22에 11을 더한 값 구하기
console.log(add(22, 11));

여기서 가져와 사용할 add 함수의 이름을 바꿔 줄 수도 있습니다. 만약 index.js에서 add 함수를 add라는 이름이 아닌 sum이라는 이름으로 사용하고 싶다면 아래와 같이 하면 됩니다.

const { add: sum } = require('calculate'); // calculate패키지에서 exports한 모든 함수/객체 중 add 함수를 sum이라는 이름의 변수에 할당한다.

// 22에 11을 더한 값 구하기
console.log(sum(22, 11));

Destructuring 사용 예

range라는 패키지가 있습니다. 패키지 사용법을 보면 0이상 10미만의 수를 담은 배열을 만들고 싶다면 다음과 같이 하라고 나옵니다.

const range = require('range'); // range패키지에서 exports한 모든 함수/객체를 range변수에 할당. 현재 range패키지에서 exports하는 함수는 range 하나 뿐임.

range.range(0, 10);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range.range()range 변수에 담긴 range 함수를 사용하겠다는 말입니다. range 패키지 에서 제공하는 함수는 range 하나 뿐입니다. 이를 사용할 때마다 range.range() 이렇게 두번 쓰는 건 조금 귀찮죠. 이럴 때 Destructring을 사용해 다음과 같이 쓸 수 있습니다.

const { range } = require('range');

range(0, 10);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
profile
🦄✨글 잘 쓰는 개발자가 되기 위해 꾸준히 기록합니다 ✨🦄

1개의 댓글

comment-user-thumbnail
2021년 9월 1일

너무 잘 배우고 갑니다~ 34기요!

답글 달기