불러온 모듈은 객체이다 - 함수 객체분해할당

trina lee·2023년 5월 17일

변수나 객체, 함수 등 필요한 소스 코드를 작성하고 마지막에 module.exports 사용하면 모듈화가 끝난다.

필요한 페이지에서 require로 모듈 파일을 가져와서 그냥 사용하면 된다.

이럴때 비구조화 할당(구조분해할당)을 사용해서 소스를 간결하게 할 수 있다.

페이지변수.getDataFromFilePromise(); 이렇게 코딩해도 되지만 소스가 깔끔하지 않기 때문이다.

const { readFile } = require("fs");

const getDataFromFilePromise = filePath => {
  return new Promise((resolve, reject) => {
    readFile(filePath, "utf8", function (err, text) {
      if (err) {
        reject(err);
      } else {
        resolve(text);
      }
    });
  });
};

// getDataFromFilePromise('README.md').then(data => console.log(data));

module.exports = {
  getDataFromFilePromise
};

현재 모듈에서 getDataFromFilePromise 함수를 외부로 내보내기 위해 module.exports = {
getDataFromFilePromise
}; 사용했다.

const path = require('path');
const { getDataFromFilePromise } = require('./02_promiseConstructor');

const user1Path = path.join(__dirname, 'files/user1.json');
const user2Path = path.join(__dirname, 'files/user2.json');

const readAllUsersChaining = () => {
  return getDataFromFilePromise(user1Path)
    .then(user1 => {
      return getDataFromFilePromise(user2Path).then(user2 => {
        return '[' + user1 + ',' + user2 + ']';
      });
    })
    .then(text => JSON.parse(text))
}

// readAllUsersChaining();

module.exports = {
  readAllUsersChaining
}

이렇게 불러온 모듈은 객체로 나타나며, 그 중에서도 getDataFromFilePromise 함수를 구조분해할당하여 개별적으로 추출하고 변수 getDataFromFilePromise에 할당한다.

이로써 getDataFromFilePromise() 이렇게 함수를 바로 호출할 수 있다.

profile
지금은 개발 모드

0개의 댓글