###๋ชจ๋์ ๋ฐฐ๊ฒฝ
- <script>๏ฟฝํ๊ทธ๋ฅผ ํตํ์ฌ ์ธ๋ถ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง, ํ์ผ๋ง๋ค ๋ ๋ฆฝ์ ์ธ ์ค์ฝํ๋ฅผ ๊ฐ์ง์ง ์๊ณ , ํ๋์ ์ ์ญ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ค. ์ฆ, ์ฌ๋ฌ๊ฐ์ jsํ์ผ์ ๋ถ๋ฌ์๋ ํ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ธ๊ฒ์ฒ๋ผ ๋๋ค.
- ์ ์ญ์ค์ฝํ๋ฅผ ๊ณต์ ํ๊ธฐ๋๋ฌธ์, ํ์ผ ๊ฐ์ ๋ณ์/ํจ์์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๊ฒจ๋ฒ๋ฆผ.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ์ํด CommonJS / ESModules ๊ฐ ๋์ด
- CommonJS๋ node.js์ ๊ธฐ๋ณธ ๋ชจ๋ ์์คํ / ESModule๋ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค
// CommonJS
// ๋ด๋ณด๋ด๊ธฐ
module.exports = { func: function() { ... } };
// ๊ฐ์ ธ์ค๊ธฐ
const module = require('./module');
//EsModule
// ๋ด๋ณด๋ด๊ธฐ
export const func = () => { ... };
export default class { ... };
// ๊ฐ์ ธ์ค๊ธฐ
import { func } from './module';
import DefaultExport from './module';
- ESModule : ์ ์ ๋ถ์ ๊ฐ๋ฅ, ๋น๋๊ธฐ์ ๋ก๋ฉ(์ฑ๋ฅ์ต์ ํ), Tree-shaking๊ฐ๋ฅ(์ฝ๋์ต์ ํ,์ฌ์ฉํ์ง์๋ ์ฝ๋์ ๊ฑฐ)
- CommonJS : ๋๊ธฐ์ ๋ก๋ฉ(์์ฐจ์ ์ผ๋ก), ๋ฐํ์์ ์์กด์ฑ ํด์
- ESModule์ ์์์ ์ ๋ชจ๋ ๊ณํ์ด ๋ช ํํด์ผํ๋ ๋ฐ๋ฉด์ CommonJS๋ ์คํํ๋ฉด์ ํ์ํ๊ฒ์ ๊ทธ๋๊ทธ๋ ๊ฐ์ ธ์จ๋ค.
- ESModule์ ์ฝ๋ ์คํ ์ ์ค๋ฅ ๋ฐ๊ฒฌ ๊ฐ๋ฅ
- ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ Javascript ์์ง์ด import/export๋ฅผ ๋ฏธ๋ฆฌ ๋ถ์ํ ์ ์๋ค.
- ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ๋ ์ด๋ค ๋ชจ๋์ ๊ฐ๊ณ ์ค๊ณ , ์ด๋ค ๋ณ์๋ฅผ ์ฌ์ฉํ๋์ง ์ ์ ์๋ค.
- ์ ์ ๋ถ์ ๋๋ถ์ ํธ๋ฆฌ์์ดํน์ด ๊ฐ๋ฅํ๋ค.
export function add(a, b) { return a + b; } export function subtract(a, b) { return a - b; } import { add } from './math.js'; // subtract๋ ๊ฐ์ ธ์ค์ง ์์ console.log(add(2,3));
- ์์ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋น๋ํ ๋ subtractํจ์๋ ์ฌ์ฉ๋์ง ์์ผ๋ฏ๋ก ์๋์ผ๋ก ์ ๊ฑฐ๋์ด ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ ํ๊ฐ๋ฅ
- ์ฝ๋ ์คํ ์ค์ require๋ฅผ ์ฌ์ฉํด์ ๋ชจ๋์ ๋ก๋ํ ์ ์๋ค.
- ์คํํ ๋ ์ด๋ค ๋ชจ๋์ ๋ก๋ํ ์ง ๊ฒฐ์ ํ๋ค.
- ๋ชจ๋ ๋ชจ๋์ด ์์ ํ ๋ก๋๋ ๋๊น์ง ๋ค์ ์ฝ๋๊ฐ ์คํ๋์ง ์๋๋ค(blocking ๋ฐ์)