변수나 객체, 함수 등 필요한 소스 코드를 작성하고 마지막에 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() 이렇게 함수를 바로 호출할 수 있다.