[JavaScript] ๋ชจ๋ํ๊ฐ ํ์ํ ์ด์ (Module)
Module์ด๋?
์ฝ๋๋ฅผ ํด๋น ํ์ผ ๋ด๋ถ์์๋ง ํ์ ํ ์ ์๋๋ก ๋ชจ๋ํํ๋ ๊ฒ
์ฆ, ํ ๋ชจ๋์ด๋ผ๊ณ ํ๋ ๊ฒ์ ํ ํ์ผ ์์ ์์ฑ๋ผ์๋ ์ฝ๋๋ฅผ ๋งํ๋ค.
๋ชจ๋ํ๋ฅผ ํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก๋ ์๋ก ๋ค๋ฅธ ๋ชจ๋(์ฆ ์๋ก ๋ค๋ฅธ ํ์ผ)์์๋ ๋ค๋ฅธ ํ์ผ์ ์๋ ๊ฒ๋ค์ ์ ๊ทผํ๊ฑฐ๋ ๋ณผ ์ ์๋ค.
๋ฐ๋ผ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ด๋ค ๋ชจ๋์ ํจ์๋ฅผ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด ์ ๊ณตํ๊ณ ์ ํ๋ ๋ชจ๋์์๋ export๋ฅผ, ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ชจ๋์์๋ import๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
Module์ ํ์์ฑ
์ฌ๋ฌ ๊ฐ์ ํ์ผ์ด ์์ ๋ ๊ฐ๊ฐ์ ํ์ผ์ ๋ชจ๋ ์ฝ๋๋ค์ global scope๋ก ์ธก์ ๋๋ค.
์ฆ ํ์ผ ์์ ์์ฑ๋ ํจ์๋ค์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ด๋ผ๋ฉด window์, ๋ ธ๋ ํ๊ฒฝ์ด๋ผ๋ฉด global์ ๋ฑ๋ก๋๋ค.
๋ฌธ์ ๋ ์ด๋ค ํ์ผ๋ค์์ ์ค๋ณต์ ์ธ ์ด๋ฆ์ ํจ์๊ฐ ๊ตฌํ๋ผ์์ ๋ ์ด๋ฆ ์ถฉ๋์ด ๋ฐ์ํ๋ค.
๊ฐ์ ธ๋ค๊ฐ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ ํจ์๊ฐ ์์ ์๋ ์์ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๊ท๋ชจ๊ฐ ์กฐ๊ธ์ด๋ผ๋ ํฐ ํ๋ก์ ํธ๋ผ๋ฉด ๋ชจ๋ํํ๋ ๊ฒ์ด ์์ ํ๋ค.
Module ์ฌ์ฉ๋ฒ
1๏ธโฃ html์์ JSํ์ผ์ script๋ก ์ฐ๊ฒฐํ ๋ type์ module๋ก ์ง์ ํด์ค๋ค.
<script type=“module” src=“๋ชจ๋ํ์ผ์ด๋ฆ.js”></script>
2๏ธโฃ export์ default๋ฅผ ๋ถ์ด๋ฉด default๋ก export๋๋ ๊ฒ์ ์๋ฏธํ๊ณ , default๋ ๋จ ํ๋์ ํจ์๋ ๋ณ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
importํ ๋ default๋ ๋ฐ๋ก ๋ช ์ํ์ง ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , ์ด์ธ์ ํจ์๋ ๋ณ์๋ { }๋ฅผ ์ฌ์ฉํด importํด์ค๋ค.
calculator.js
export function add(a, b) {
return a + b;
}
export const price = 1000;
export function printPrice() {
console.log('price: ', price);
}
mathExam.js
import calcaulator, {printPrice} from './10-3-module1.js';
console.log(calculator.add(1, 2));
calculator.printPrice();
calculator.price;