CommonJS
많은 프로젝트에서 ES6 모듈 시스템을 더 널리 사용하고 있는 추세이다.
하지만 import 키워드를 사용할 수 없는 상황(babel과 같은 ES6 코드 변환 도구를 사용할 수 없을 때)에서는
require 키워드를 사용해야하기 때문에 사용 방법을 알고 있으면 좋다.
require - 불러오기
const moment = require("moment");
CommonJS에서는 다른 파일의 코드를 불러올 때 require 키워드를 사용하여
다른 변수를 할당하듯이 모듈을 불러온다.
exports/module.exports - 내보내기
CommonJS 방식으로 모듈을 내보낼 때는 특정 변수나 그 변수의 속성으로 내보낼 객체를 세팅해줘야 한다.
특히 exports와 module.exports 변수를 상황에 맞게 잘 사용해야 한다.
여러 개의 객체를 내보낼 경우, exports 변수 속성으로 할당.
딱 하나의 객체를 내보낼 경우, module.exports 변수 자체에 할당.
복수 객체 내보내기/불러오기
아래는 미국과 캐나다 달러를 상호 변환해주는 js 예제 코드이다.
내보내기
3개의 함수 중 2개의 함수만 다른 파일에서 접근할 수 있도록 내보내기를 했다.
currency-function.js
const exchangeRate = 0.91;
function roundTwoDecimals(amount){
return Math.round(amount * 100) / 100;
}
const canadianToUs = function(canadian){
return roundTwoDecimals(canadian * exchangeRate);
};
function usToCanadian(us){
return roundTwoDecimals(us / exchangeRate);
}
exports.canadianToUs = canadianToUs;
exports.usToCanadian = usToCanadian;
불러오기
text-currency-function.js
const currency = require("./currency-functions");
console.log("50 Canadian dollars equals this amount of US dollars:");
console.log(currency.canadianToUs(50));
console.log("30 Canadian dollars equals this amount of Canadian dollars:");
console.log(currency.usToCanadian(30));
currency-function.js에 있는 변수들을 exports해서
text-currency-function.js 파일에 require 키워드를 통해 불러와 사용할 수 있다.
단일 객체 내보내기
내보내기
두 개 함수를 객체로 묶어서 내보내기.
내보낼 객체를 module.exports 변수에 할당해주면 된다.
currency-function.js
const exchangeRate = 0.91;
function roundTwoDecimals(amount){
return Math.round(amount * 100) / 100;
}
const obj = {};
obj.canadiansToUs = function(canadian){
return roundTwoDecimals(canadian * exchangeRate);
};
obj.usToCanadian = function(us){
return roundTwoDecimals(us/exchangeRate);
}
module.exports = obj;
불러내기
text-currency-function.js
const currency = require("./currency-object");
console.log("50 Canadian dollars equals this amount of US dollars:");
console.log(currency.canadianToUs(50));
console.log("30 Canadian dollars equals this amount of Canadian dollars:");
console.log(currency.usToCanadian(30));
참고 감사합니다!
'Frontend > JavaScript' 카테고리의 다른 글
[Javascript] Object (0) | 2021.10.12 |
---|---|
[Javascript] ES6 모듈(ESM) (0) | 2021.10.11 |
[Javascript] 모듈이란? (0) | 2021.10.10 |
[Javascript] 특수 문자 입력(이스케이프 시퀀스) (0) | 2021.09.29 |
[Javascript] 문자열 줄바꿈하는 2가지 방법 (0) | 2021.09.28 |