2025. 8. 8. 19:31ใFront-end/JavaScript

๋ชฉ์ฐจ
1. ๊ฐ์
2. ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ
2-1. ๋ชจ๋์ ๊ตฌ์ฑ
2-2. ๋ชจ๋ ์์คํ
3. ESM (ECMAScript Module)
1. ๊ฐ์
JS ๊ณ์ด ํ์ผ์ ๊ฐ๋ฐ, ํ๊ฒฝ ์ค์ ๋ฑ์ ํ๋ค๋ณด๋ฉด ๋ญ๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ๊ฒฝ์ด๋ ์ค์ ๊ด๋ จ๋ ๋ง ๊ฐ๊ธฐ๋ ํ๋ฐ
์ ํํ ๋ญ์ง๋ ๋ชจ๋ฅด๊ฒ ๊ณ , ์ผ๋จ ๋์ด๊ฐ๋ ์งํ์ ํ ์ ์๋ ์ฉ์ด๋ค์ ๋ง์ด ๋ง๋๊ฒ ๋๋ค. ๊ฐ๋ น ESM ๊ฐ์ ๊ฒ..
๐คท ์๋ ๋์ฒด ESM์ด ๋ญ๋ฐ?? Common JS๊ฐ ๋ญ๋ฐ??? ๐คท
ํด์ ๋๋ฌด ๋ฆ๊ธฐ ์ ์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
2. ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ
๊ฐ๋ฐํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ํ์ผ์ ๋ถ๋ฆฌํด์ผํ๋ ๋๊ฐ ์จ๋ค.
์ด ๋ถ๋ฆฌ๋ ๊ฐ๊ฐ์ ํ์ผ์ ๋ชจ๋์ด๋ผ๊ณ ํ๋ค.
๋ชจ๋์ ํ์ผ์ด ๋๋ฌด ๊ธธ๊ณ ๋ณต์กํด์ ธ์ ๋ถ๋ฆฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๊ด๋ฒ์ํ ๋ฒ์๋ฅผ ๊ฐ์ง์ง ์๋๋ค.
https://ldd6cr-adness.tistory.com/418
๋ชจ๋์ ๋ญ๊น
๋ชฉ์ฐจ1. ๋ชจ๋์ด๋2. ๋ชจ๋์ ํต์ฌ ๊ธฐ๋ฅ3. ๋ธ๋ผ์ฐ์ ํน์ ๊ธฐ๋ฅ4. ๋น๋ ํด1. ๋ชจ๋์ด๋๊ฐ๋ฐ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ํ์ผ์ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌํด์ผํ๋ ์์ ์ด ์จ๋ค.์ด๋ ๊ฒ ๋ถ๋ฆฌ๋ ํ์ผ ๊ฐ๊ฐ์
ldd6cr-adness.tistory.com
1. ๋ชจ๋์ ๊ตฌ์ฑ
- ํด๋์ค ํ๋
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ (ํน์ ๋ชฉ์ ์ ๊ฐ์ง ๋ณต์์ ํจ์)
์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉฐ, ๋ค์ํด์ง๋ฉฐ, ์ด๋ค ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ชจ๋๋ค์ด ์ฐ๋ค๋ค ์๊ฒจ๋ ๊ฒ์ด๋ค.
๋ชจ๋์ด ๋ง์์ง์, ์๋ฐ์คํฌ๋ฆฝํธ ์ปค๋ฎค๋ํฐ๋ ๋ชจ๋์ ํ์ํ ๋ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์์คํ ์ ๋ง๋ ๋ค.
2. ๋ชจ๋ ์์คํ
๋ชจ๋ ์์คํ ์ ์ด๋ป๊ฒ ๋ชจ๋์ ์ ์ํ๊ณ ๋ถ๋ฌ์ฌ ๊ฒ์ธ์ง์ ๋ํ ๋ฌธ๋ฒ/์คํ/๊ท์น๊ฐ์ ๊ฒ์ด๋ค.
๋ชจ๋์ ๋ด๋ณด๋ด๊ณ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ๋๋ฉฐ, ๋ชจ๋์ ์ง์์ import์ export๋ฅผ ์ ์ฉํ ์ ์๊ฒ ๋๋ค.
- import : ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ - ์ง์์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ๋ชจ๋์ ๊ธฐ๋ฅ์ ๊ฐ์ ธ์ฌ ์ ์๋ค
- export : ๋ชจ๋ ๋ด๋ณด๋ด๊ธฐ - ๋ณ์/ํจ์ ์์ ์ง์์๋ฅผ ๋ถ์ฌ ํด๋น ๋ณ์/ํจ์์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋์ ๊ฐ์ ๋ชจ๋ ์์คํ ์ ์ฌ์ฉํ ์ ์๋ค.
| ๋ชจ๋ ์์คํ | ํน์ง | ์ค๋ช |
| CommonJS | ⋅ ์ ์ ๋ฐ์ธ๋ฉ ⋅ ๋๊ธฐ import ⋅ ์๋ฒ ํ๊ฒฝ์ ์ ํฉ |
Node.js์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ์์คํ
์ผ๋ก, ์คํ ์ require()๋ฅผ ํตํด ๋ชจ๋์ ๋ถ๋ฌ์จ๋ค. ์๋ฒ ์ฌ์ด๋์์ ์ฌ์ฉํ๊ธฐ ์ข๋ค. |
| AMD | ⋅ ๋น๋๊ธฐ | ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ๋น๋๊ธฐ์ ์ผ๋ก ๋ชจ๋์ ๋ก๋ฉํ ์ ์๋๋ก ์ค๊ณ๋์๋ค. CommonJS ๋ฐฉ์์ ํ์ํ ๋ชจ๋์ด ๋ชจ๋ ์ค๋น๋์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก, ๋คํธ์ํฌ๋ก ๋ชจ๋์ ๋ฐ๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ค. |
| UMD | ⋅ ์ฌ๋ฌ ๋ชจ๋ ๋ก๋์์ ์ฌ์ฉ ๊ฐ๋ฅ ⋅๋ฒ์ฉ์ฑ |
CommonJS, AMD ๋ฐฉ์ ๋ชจ๋์์ ์๋ํ๋๋ก ์ค๊ณ๋ ํ์ด๋ธ๋ฆฌ๋ ํํ์ด๋ค. ๋ชจ๋ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ตฌํ์ ์ ์ํ๋ ํํ์ด๋ค. CJS๋ module.exports๋ฅผ ์ฌ์ฉํ๋ฉฐ, AMD๋ define์ ์ฌ์ฉํ๋ฏ๋ก, ⋅ exports, module์ด ์กด์ฌํ๋ฉด CJS ๋ฐฉ์์ผ๋ก, ⋅ define, define.amd๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ AMD ๋ฐฉ์์ผ๋ก, ⋅ ๋๋ค ์๋๋ผ๋ฉด window ๊ฐ์ฒด์ ๋ชจ๋์ ๋ณด๋ธ๋ค. |
| ESM | ⋅ ์ ์ ๋ฐ์ธ๋ฉ ⋅ ๋น๋๊ธฐ import ๊ฐ๋ฅ ⋅๊ณต์ ํ์ค |
ES6์์ ๋์
๋ ๊ณต์ ํ์ค ๋ชจ๋ ์์คํ
์ผ๋ก, ์ธ์ด ์์ฒด์ ํ์ฌ๋์ด ์๋ค. export - import ๋ฌธ์ผ๋ก JS ํ์ผ ๊ฐ์ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค. |
3. ESM (ECMAScript Module)
ES6๋ถํฐ ๋์ ๋ ๋ชจ๋ ์์คํ ์ผ๋ก, export - import ๋ฌธ์ผ๋ก JS ํ์ผ ๊ฐ ์ ๊ทผ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
์ด ๋ฐฉ์์ด ๋์ค๊ธฐ ์ ๊น์ง๋ <script> ํ์ผ์ ์ ์ญ ์ค์ฝํ์ฒ๋ผ ์ฌ์ฉํ๋ค. (์์ ์์ด๋ฉด ์๋๊ณ ํ์๊ฐ ์์๋ฅผ ์ค์ผ์ํฌ ์ ์๋ ๊ทธ๊ฒ..ใทใท)
1. ESM ๋์ ๋ฐฉ์
ํ์ ๋จ๋ฐํ๋ import์ export๊ฐ ์ด๋ป๊ฒ ๋์ํ๊ณ ์์๋์ง ์์๋ณด์.
- ๋ชจ๋ ์ ์ธ
- ๊ฐ๋ฐ์๊ฐ import/export ๋ฌธ๋ฒ์ผ๋ก ๋ชจ๋์ ์์ฑํ๋ค.
- ์ ์ ๋ถ์ โ
- ์ ์ธํ ๋ชจ๋์ ์คํํ๊ธฐ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ ์ ๋ถ์ํ๋ค.
- ๋ถ์์ ํตํด Module Record(๋ชจ๋ ๋ฉํ๋ฐ์ดํฐ ๊ฐ์ฒด)๋ฅผ ์์ฑํ๋ค.
Module Record์ ์ญํ
- ๊ตฌ๋ฌธ ๋ถ์ ๊ฒฐ๊ณผ ๋ณด๊ด (import/export ๊ตฌ๋ฌธ ๋ถ์ ํ ์ด๋ค ๋ฐ์ธ๋ฉ์ด ์๋์ง ์ ์ฅ)
- ์์กด์ฑ ์ ๋ณด ์ถ์ (์ด๋ค ๋ชจ๋์ import ํ๋์ง ๊ฒฝ๋ก/์ด๋ฆ ์ ๋ณด๋ฅผ ํฌํจ)
- ํธ์ถ ํ๊ฒฝ ์ค๋น (๋ชจ๋ ์คํ ์ ํ์ํ ์ด๊ธฐ ํ๊ฒฝ ๋ ์ฝ๋๋ฅผ ์ค์ )
- ์ํ ์ฐธ์กฐ ์ถ์ (์ํ ์์กด์ฑ์ด ์๋ ๊ฒฝ์ฐ, ์ฒ๋ฆฌ ํ๋ฆ์ ๊ด๋ฆฌ)
- 1ํ ์คํ ๊ด๋ฆฌ (๋ชจ๋์ด ํ ๋ฒ๋ง ํ๊ฐ๋จ์ ๋ณด์ฅ)
- ๋ชจ๋ ๋ก๋ฉ
- ๋น๋๊ธฐ์ ๋ฐฉ์์ผ๋ก ๋ชจ๋์ ๋ก๋ฉํ๋ค.(๋คํธ์ํฌ or ํ์ผ์์คํ )
- ๋ชจ๋ ์ธ์คํด์คํ โ
- Module Record๋ฅผ Module Instance๋ก ๋ณํํ๋ค.
Module Instance์ ์ญํ
- importํ ๋ณ์/ํจ์์๊ฒ ํ ๋นํ ๊ณต๊ฐ์ ์ฐพ๋ ๊ณผ์ ์ ๊ฐ์ง๋ค.
- import/export๊ฐ ๋ชจ๋ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. (๋ผ์ด๋ธ ๋ฐ์ธ๋ฉ)
- ์ด๋ import ํด์จ ๋ชจ๋์ ํ์์์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๋ค.
- Module Record๋ฅผ Module Instance๋ก ๋ณํํ๋ค.
- ๋ชจ๋ ํ๊ฐ โ
- ๊ฐ ๋ชจ๋์ ํ ๋ฒ๋ง ์คํ๋๋ฉฐ, ์คํ ์ดํ ์บ์ฑ๋๋ค.
- import๋ ๋ชจ๋์ด ์คํ๋๋ฉด export ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, ์ ์ฅ๋ ๊ฐ์ ์ฐธ์กฐํ๋ ๋ชจ๋์ด ์ฌ์ฉํ๋ค.
์ฐธ๊ณ
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| B7 : ์กฐ๊ฑด๋ฌธ (3) | 2025.08.12 |
|---|---|
| B6 : ๊ตฌ๋ฌธ๊ณผ ์ฐ์ฐ์ (9) | 2025.08.11 |
| B4 : ์์ํ์ ํ๋ณํ (2) | 2025.08.05 |
| B3 : ๋ณ์, ์์, ์๋ฃํ (4) | 2025.08.05 |
| B2 : JS ๊ธฐ๋ณธ ๊ฐ๋ (1) | 2025.08.05 |
GitHub