# Import & Export
์ํฌํธ(Import)์ ์ต์คํฌํธ(Export)๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ๋๋ฅผ ๋ชจ๋ํ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋ํ๋ ์ฝ๊ฒ ๋งํด์ ๋ค๋ฅธ ํ์ผ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ฅ์ ํน์ ํ์ผ์์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
# ๋ชจ๋ํ์ ํ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ํจ ๋ฒ์๋ ์ ์ญ์ผ๋ก ์์ํฉ๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด HTML ํ์ด์ง๋ฅผ ๋ก๋ฉํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ต๋๋ค.
<!-- index.html -->
<body>
<script src="a.js"></script>
<script src="b.js"></script>
<script>
getTotal(); // 200
</script>
</body>
// a.js
var total = 100;
function getTotal() {
return total;
}
// b.js
var total = 200;
๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฐฐ๊ฒฝ์ ๊ฐ์ง์ ๋ถ๋ค์ด๋ผ๋ฉด ํ์ผ ๋ง๋ค ๋ณ์์ ์ ํจ ๋ฒ์๊ฐ ๋ค๋ฅผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์์ ์ ํจ ๋ฒ์๊ฐ ์ ์ญ์ผ๋ก ์กํ๊ธฐ ๋๋ฌธ์ ๋ค์์คํ์ด์ค ๋ชจ๋ํ ํจํด์ด๋ Require.js (opens new window)์ ๊ฐ์ ๋ชจ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ํ ๊ธฐ๋ฅ์ ๊ตฌํํด์์ต๋๋ค.
์ด์ ๋ ํ๋ก๊ทธ๋๋ฐ ํจํด์ด๋ ๋ณ๋์ ๋ชจ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด ์์ฒด์์ ๋ชจ๋ํ๋ฅผ ์ง์ํฉ๋๋ค.
# import & export ๊ธฐ๋ณธ ๋ฌธ๋ฒ
๋ชจ๋ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ import, export ๋ฌธ๋ฒ์ ๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ export ๋ฌธ๋ฒ์ ๋๋ค.
export ๋ณ์, ํจ์
๋ค๋ฅธ ํ์ผ์์ ๊ฐ์ ธ๋ค ์ธ ๋ณ์๋ ํจ์์ ์์ export
๋ผ๋ ํค์๋๋ฅผ ๋ถ์
๋๋ค. ์ต์คํฌํธ๋ ํ์ผ์ ์ํฌํธ๋ก ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import ๋ฌธ๋ฒ์ ๋ณด๊ฒ ์ต๋๋ค.
import { ๋ถ๋ฌ์ฌ ๋ณ์ ๋๋ ํจ์ ์ด๋ฆ } from 'ํ์ผ ๊ฒฝ๋ก';
์ต์คํฌํธ๋ ๋ณ์๋ ํจ์๋ฅผ {}
์ ์ ์ธํ ๋ค ํด๋น ํ์ผ์ด ์๋ ๊ฒฝ๋ก๋ฅผ ์ ์ด์ค๋๋ค.
# import & export ๊ธฐ๋ณธ ์์
๋ฐฐ์ด ๋ฌธ๋ฒ์ ๋ฐํ์ผ๋ก ๊ฐ๋จํ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
// math.js
export var pi = 3.14;
// app.js
import { pi } from './math.js';
console.log(pi); // 3.14
์ ์ฝ๋๋ math.js
๋ผ๋ ํ์ผ์์ pi
๋ฅผ ์ต์คํฌํธํ๊ณ app.js
ํ์ผ์์ ์ํฌํธํ์ฌ ์ฝ์์ ์ถ๋ ฅํ๋ ์ฝ๋์
๋๋ค. ๋ง์ฝ ๋ณ์๊ฐ ์๋๋ผ ํจ์๋ฅผ ๋ด๋ณด๋ด๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ์ฝ๋ฉํ ์ ์์ต๋๋ค.
// math.js
export var pi = 3.14;
export function sum(a, b) {
return a + b;
}
// app.js
import { sum } from './math.js';
sum(10, 20); // 30
์ ์ฝ๋๋ math.js
์ ๋ ์ซ์์ ํฉ์ ๊ตฌํ๋ sum()
ํจ์๋ฅผ ์ต์คํฌํธ ํ ๋ค app.js
์์ ์ํฌํธํ์ฌ ์ฌ์ฉํ ์ฝ๋์
๋๋ค.
# ๋ธ๋ผ์ฐ์ ์ง์ ๋ฒ์
ES6์ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ๋ค์ด ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋๋๋ฐ ๋ฐํด import, export๋ ์์ง ๋ณด์กฐ ๋๊ตฌ๊ฐ ์์ด์ผ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์ ๋ฒ์๋ ์ฌ๊ธฐ (opens new window)๋ฅผ ํ์ธํ์ธ์.
๊ฐ๊ธ์ ์ค๋ฌด ์ฝ๋์์ ์ฌ์ฉํ์ค ๋๋ ์นํฉ(Webpack) (opens new window)๊ณผ ๊ฐ์ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.