<aside> ๐ก
์ฒ์ JavaScript๋ ๋ชจ๋์ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด ์์ด, ํ๋์ ํ์ผ์ ๋ชจ๋ ๊ธฐ๋ฅ๋ค์ด ๋ค์ด๊ฐ์ผํ๋ค. CJS, AMD, UMD, ESM์ด ๋ฑ์ฅํ ์ดํ์๋ ๋ชจ๋๋ก ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ ์ ์๊ฒ ๋์๋ค.
</aside>
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๋ฒ์์ ์ฌ์ฉํ ์ ์๋ ํฐ ์ด์ ์ค ํ๋๋ย ๋ชจ๋ํ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ํ ๋ช ์ธ๋ฅผ ๋ง๋ ๋ํ์ ์ธ ๊ทธ๋ฃน ์ค 'CommonJS'๊ฐ ์๊ณ , ์ด CommonJS์ ๋ช ์ธ๊ฐ ํ์ฌ node์ ํ์ค์ด ๋์ด์๋ค.
node ํ์ค(CommonJS์ ๋ช
์ธ)์ดย require
์ย module.exports
ย ์ด๋ค.
ex)
// ์๋์ ๊ฐ์ด require์ ํตํด package/lib ๋ชจ๋์ ๋ณ์์ ๋ด์ ์ ์๋ค.
const lib = require('package/lib');
// ๊ฐ์ ธ์จ ๋ชจ๋์ ์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
function foo () {
lib.log('hello world!');
}
// foo ํจ์๋ฅผ ๋ค๋ฅธ ํ์ผ์์ ์ฌ์ฉํ ์ ์๋๋ก, ๋ค๋ฅธ ๋ชจ๋๋ก ์ถ์ถ๋ ์ ์๋ค.
exports.foobar = foo;
// ๋๊ธฐ๋ก ๋์ํ๋ ํน์ง์ ๊ฐ์ง๋ค.
// ๋๊ธฐ์ ์ธ ํน์ง์ ๊ฐ์ง๋ฏ๋ก ์๋ฒ์ฌ์ด๋์ ์ฌ์ฉํ๊ธฐ ์ฉ์ดํ๋ค.
// Node.js๊ฐ CommonJS๋ฅผ ์ฑํํ์ฌ ์ฌ์ฉํ๊ณ ์๋ค.
// (server ๊ตฌ์ถํ ํ์ผ๋ค์ ๋ณด๋ฉด require๋ก ๋ชจ๋์ ๋ถ๋ฌ์ค๊ณ ์๋ค.)
const foo = require('foo');
const bar = require('bar');
foo.log('It is foo');
bar.log('It is bar');
๊ทธ๋ฐ๋ฐย ES6๋ก ๋์ด์ค๋ฉด์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ฒด์์ ES6 Module์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ชจ๋ํ๋ฅผ ์ง์ํ๊ธฐ ์์ํ๊ณ ์ด๊ฒ์ด ๋ฐ๋กย import
ย ์ย export
์ด๋ค.
ES6์ JavaScript ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
import lib from 'package/lib';
function foo () {
lib.log('hello world!');
}
export {
foobar: foo
};
export , export default ์ฐจ์ด์