์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ

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๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์žˆ์—ˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

  1. ๋ชจ๋“ˆ ์„ ์–ธ
    • ๊ฐœ๋ฐœ์ž๊ฐ€ import/export ๋ฌธ๋ฒ•์œผ๋กœ ๋ชจ๋“ˆ์„ ์ž‘์„ฑํ•œ๋‹ค.
  2. ์ •์  ๋ถ„์„ โœ…
    • ์„ ์–ธํ•œ ๋ชจ๋“ˆ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ •์  ๋ถ„์„ํ•œ๋‹ค.
    • ๋ถ„์„์„ ํ†ตํ•ด  Module Record(๋ชจ๋“ˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ์ฒด)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
      Module Record์˜ ์—ญํ•                                                                                     
      - ๊ตฌ๋ฌธ ๋ถ„์„ ๊ฒฐ๊ณผ ๋ณด๊ด€ (import/export ๊ตฌ๋ฌธ ๋ถ„์„ ํ›„ ์–ด๋–ค ๋ฐ”์ธ๋”ฉ์ด ์žˆ๋Š”์ง€ ์ €์žฅ)  
      - ์˜์กด์„ฑ ์ •๋ณด ์ถ”์  (์–ด๋–ค ๋ชจ๋“ˆ์„ import ํ•˜๋Š”์ง€ ๊ฒฝ๋กœ/์ด๋ฆ„ ์ •๋ณด๋ฅผ ํฌํ•จ)               
      - ํ˜ธ์ถœ ํ™˜๊ฒฝ ์ค€๋น„ (๋ชจ๋“ˆ ์‹คํ–‰ ์ „ ํ•„์š”ํ•œ ์ดˆ๊ธฐ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ๋ฅผ ์„ค์ •)                          
      - ์ˆœํ™˜ ์ฐธ์กฐ ์ถ”์  (์ˆœํ™˜ ์˜์กด์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ฒ˜๋ฆฌ ํ๋ฆ„์„ ๊ด€๋ฆฌ)                             
      - 1ํšŒ ์‹คํ–‰ ๊ด€๋ฆฌ (๋ชจ๋“ˆ์ด ํ•œ ๋ฒˆ๋งŒ ํ‰๊ฐ€๋จ์„ ๋ณด์žฅ)                                                  
  3. ๋ชจ๋“ˆ ๋กœ๋”ฉ
    • ๋น„๋™๊ธฐ์  ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋”ฉํ•œ๋‹ค.(๋„คํŠธ์›Œํฌ or ํŒŒ์ผ์‹œ์Šคํ…œ)
  4. ๋ชจ๋“ˆ ์ธ์Šคํ„ด์Šคํ™” โœ…
    • Module Record๋ฅผ Module Instance๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
      Module Instance์˜ ์—ญํ• 
      - importํ•  ๋ณ€์ˆ˜/ํ•จ์ˆ˜์—๊ฒŒ ํ• ๋‹นํ•  ๊ณต๊ฐ„์„ ์ฐพ๋Š” ๊ณผ์ •์„ ๊ฐ€์ง„๋‹ค.
      - import/export๊ฐ€ ๋ชจ๋‘ ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. (๋ผ์ด๋ธŒ ๋ฐ”์ธ๋”ฉ)
      - ์ด๋•Œ import ํ•ด์˜จ ๋ชจ๋“ˆ์€ ํ•˜์œ„์—์„œ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  5. ๋ชจ๋“ˆ ํ‰๊ฐ€ โœ…
    • ๊ฐ ๋ชจ๋“ˆ์€ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋˜๋ฉฐ, ์‹คํ–‰ ์ดํ›„ ์บ์‹ฑ๋œ๋‹ค.
    • import๋œ ๋ชจ๋“ˆ์ด ์‹คํ–‰๋˜๋ฉด export ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋ฉฐ, ์ €์žฅ๋œ ๊ฐ’์€ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“ˆ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•