โ ์ ์ผํ ์ง์ค์ ๋งํ์๋ฉด, ๊ฐ์ฒด ์งํฅ ํ โ์คํ๊ฒํฐ ์ฝ๋โ๋, ๋น์ฐํ, โ๋ผ์๋ ์ฝ๋โ์ด๋ค. (๊ณผํ๊ฒ ๋ง์ ๊ณ์ธต) โ
- Roberto Waltman

require()
CommonJS ๋ฐฉ์์ผ๋ก ๋ชจ๋์ ๋ด๋ณด๋ผ ๋๋ ES6์ฒ๋ผ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด ์๋๋ผ ํน์ ๋ณ์๋ ๊ทธ ๋ณ์์ ์์ฑ์ผ๋ก ๋ด๋ณด๋ผ ๊ฐ์ฒด๋ฅผ ์ธํ ํด์ค์ผ ํฉ๋๋ค.
ํนํ, ์ ์ผ ํ๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด exports ๋ณ์์ module.exports ๋ณ์๋ฅผ ์ํฉ์ ๋ง๊ฒ ์ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ 2๊ฐ์ง ๊ท์น๋ง ๊ธฐ์ตํ๋ฉด ๋ฉ๋๋ค
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ด๋ณด๋ผ ๊ฒฝ์ฐ, exports๋ณ์์ ์์ฑ์ผ๋ก ํ ๋นํฉ๋๋ค.
- ๋ฑ ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ด๋ณด๋ผ ๊ฒฝ์ฐ, module.exports ๋ณ์ ์์ฒด์ ํ ๋นํฉ๋๋ค.
๋จ, ๊ฐ์ฒด๋ฅผ ๋ฌถ์ด์ ์ฌ๋ฌ๊ฐ ๊ฐ์ exportํ ์ ์์ต๋๋ค.
๋ ธ๋ ๋ณต์ ๊ฐ์ฒด ๋ด๋ณด๋ด๊ธฐ/๋ถ๋ฌ์ค๊ธฐ
๋ด๋ณด๋ด๊ธฐ
์๋๋ ๋ฏธ๊ตญ๊ณผ ์บ๋๋ค ๋ฌ๋ฌ๋ฅผ ์ํธ ๋ณํํด์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ ์ฝ๋์ ๋๋ค.
์ด ํ์ผ์๋ 3๊ฐ์ ํจ์๊ฐ ์๋๋ฐ ์๋ 2๊ฐ์ ํจ์๋ง ๋ค๋ฅธ ํ์ผ์์ ์ ๊ทผํ ์ ์๋๋ก ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํ์์ต๋๋ค.
exports ๋ณ์์ ์์ฑ์ผ๋ก ๋ด๋ณด๋ผ ํจ์๋ค์ ์ธํ ํฉ๋๋ค.
/* currency-functions.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; // ๋ด๋ณด๋ด๊ธฐ 1
exports.usToCanadian = usToCanadian; // ๋ด๋ณด๋ด๊ธฐ 2
๋ถ๋ฌ์ค๊ธฐ
์์์ ๋ด๋ณด๋ธ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ require ํค์๋๋ฅผ ํตํด ํ ๋ฒ์ ๋ถ๋ฌ์ ๋ณ์์ ํ ๋นํ ์ ์์ผ๋ฉด, ๊ทธ ๋ณ์๋ฅผ ํตํด์ ๋ด๋ณด๋ธ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์ต๋๋ค.
/* test-currency-functions.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 US dollars equals this amount of Canadian dollars:");
console.log(currency.usToCanadian(30));
์คํ ๊ฒฐ๊ณผ
50 Canadian dollars equals this amount of US dollars:
45.5
30 US dollars equals this amount of Canadian dollars:
32.97โ
๋ ธ๋ ๋จ์ผ ๊ฐ์ฒด ๋ด๋ณด๋ด๊ธฐ
๋ด๋ณด๋ด๊ธฐ
์ด๋ฒ์๋ ์์ ์ฝ๋๋ฅผ ์ด์ง ์์ ํ์ฌ ์๋ ๋ ๊ฐ ํจ์๋ฅผ ๋ฉ์๋๋ก ๊ฐ์ฒด๋ก ๋ฌถ์ด์ ๋ด๋ณด๋ด๊ธฐ๋ฅผ ํ์์ต๋๋ค.
๋ด๋ณด๋ผ ๊ฐ์ฒด๋ฅผ module.exports ๋ณ์์ ํ ๋นํด์ฃผ๋ฉด ๋ฉ๋๋ค.
/* currency-class.js */
const exchangeRate = 0.91;
// ์ ๋ด๋ณด๋
function roundTwoDecimals(amount) {
return Math.round(amount * 100) / 100;
}
// ๋ด๋ณด๋ด๊ธฐ
const obj = {};
obj.canadianToUs = function (canadian) {
return roundTwoDecimals(canadian * exchangeRate);
};
obj.usToCanadian = function (us) {
return roundTwoDecimals(us / exchangeRate);
};
module.exports = obj;
๋ถ๋ฌ๋ด๊ธฐ
์์์ ๋ด๋ณด๋ธ ํ๋์ ๊ฐ์ฒด๋ require ํค์๋๋ฅผ ํตํด ๋ณ์์ ํ ๋นํ ์ ์์ผ๋ฉฐ, ๊ทธ ๋ณ์๋ฅผ ํตํด์ ์ผ๋ฐ ๊ฐ์ฒด์ ์ ๊ทผํ๋ ๊ฒ ์ฒ๋ผ ์์ฑ์ ์ธํ ๋์ด์๋ ํจ์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
/* test-currency-object.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 US dollars equals this amount of Canadian dollars:");
console.log(currency.usToCanadian(30));
์คํ ๊ฒฐ๊ณผ
50 Canadian dollars equals this amount of US dollars:
45.5
30 US dollars equals this amount of Canadian dollars:
32.97โ
require ๋๋ ํ ๋ฆฌ
require ํจ์์ ์ธ์์๋ ํ์ผ๋ฟ๋ง ์๋๋ผ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์ฃ .
project/
โโโ app.js
โโโ module/
โโโ index.js
โโโ calc.js
โโโ print.js
์๋๊ณผ ๊ฐ์ด ๋ชจ๋์ ๋ช
์ํ์ง ์๊ณ require ํจ์๋ฅผ ํธ์ถํ๋ฉด ํด๋น ๋๋ ํฐ๋ฆฌ์ index.js์ ๋ก๋ํ๊ฒ ๋ฉ๋๋ค
const myModule = require('./module');
์ด๋ ๋ก๋๋๋ index.js ๋ด์์ calc.js๊ณผ print.js๋ฅผ requireํ๋ฉด ํ๋ฒ์ require๋ก alc.js๊ณผ print.js์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ์ฃ .
module/calc.js
module.exports = {
add (v1, v2) { return v1 + v2 },
minus (v1, v2) { return v1 - v2 }
};
module/print.js
module.exports = {
sayHello() { console.log('Hi!') }
};
module/index.js
module.exports = {
calc: require('./calc'),
print: require('./print')
};
app.js (์ฌ์ฉ)
const myModule = require('./module');
// module/calc.js์ ๊ธฐ๋ฅ
const result = myModule.calc.add(1, 2);
console.log(result);
// module/print.js์ ๊ธฐ๋ฅ
myModule.print.sayHello();
๋ค์์ ๊ฐ์ ์๋ฆฌ์ ๋ค๋ฅธ ๋ชจ๋ ํจ์ ์์ ๊ทธ๋ฆผ์ ๋๋ค.


์ฆ์ ์คํํ๊ธฐ
๋ณ์์ ๋์ ํ์ง ์๊ณ require๋ง ์ฐ๋ฉด ๋ฐ๋ก ์คํํ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฉ๋๋ค.
require('./var.js'); // var.js์ ์ฝ๋๋ฅผ ๋ฐ๋ก ์คํ
์ํ ์ฐธ์กฐ (๋ฌดํ๋ฃจํ)
์ค์๋ก ๋ ๊ฐ์ ๋ชจ๋์ด ์๋ก๋ฅผ requireํ๋ ์ํฉ์ ์กฐ์ฌํด์ผ ํฉ๋๋ค.

- dep1์ด dep2๋ฅผ requireํ๊ณ ,
- dep2๊ฐ dep1์ require ํจ.


- dep1์ module.exports๊ฐ ํจ์๊ฐ ์๋๋ผ ๋น ๊ฐ์ฒด๊ฐ ๋จ(๋ฌดํ ๋ฐ๋ณต์ ๋ง๊ธฐ ์ํด ์๋๋จ)
- ์ํ์ฐธ์กฐํ๋ ์ํฉ์ด ๋์ค์ง ์๋๋ก ํ๋ ๊ฒ ์ข์.
require โ๏ธ import (CommonJs์ ES6) ์ฐจ์ด
[NODE] ๐ require โ๏ธ import (CommonJs์ ES6) ์ฐจ์ด
require vs import ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด require๋ import ํค์๋๋ฅผ ํตํด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ฅผ ์์ฃผ ๋ณด๊ฒ ๋ฉ๋๋ค. require๋ NodeJS์์ ์ฌ์ฉ๋๊ณ ์๋ CommonJS ํค์๋์ด๊ณ , import๋..
inpa.tistory.com
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.