🌱 48μž₯ : λͺ¨λ“ˆ

μ˜€λ‹€ν˜œΒ·2022λ…„ 7μ›” 24일
0
post-thumbnail

1. λͺ¨λ“ˆμ˜ 일반적 의미

  • λͺ¨λ“ˆ : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” κ°œλ³„μ  μš”μ†Œλ‘œμ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각
  • λͺ¨λ“ˆμ€ κΈ°λŠ₯을 κΈ°μ€€μœΌλ‘œ 파일 λ‹¨μœ„λ‘œ λΆ„λ¦¬ν•œλ‹€.
  • λͺ¨λ“ˆμ΄ μ„±λ¦½ν•˜κΈ° μœ„ν•΄μ„œλŠ” μžμ‹  만의 파일 μŠ€μ½”ν”„λ₯Ό κ°€μ Έμ•Ό ν•œλ‹€.
  • μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” λͺ¨λ“ˆμ˜ μžμ‚°μ€ 기본적으둜 μΊ‘μŠν™”λ˜μ–΄ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ μ ‘κ·Όν•  수 μ—†κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό μ™„μ „νžˆ λΆ„λ¦¬λ˜μ–΄ μ‘΄μž¬ν•œλ‹€.
  • export λ₯Ό 톡해 κ³΅κ°œκ°€ ν•„μš”ν•œ μžμ‚°μ— ν•œμ •ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ 선택적 κ³΅κ°œκ°€ κ°€λŠ₯ν•˜λ‹€.
  • 곡개된 λͺ¨λ“ˆμ˜ μžμ‚°μ€ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ μž¬μ‚¬μš©ν•  수 μžˆλ‹€.
  • λͺ¨λ“ˆ μ‚¬μš©μž : 곡개된 λͺ¨λ“ˆμ˜ μžμ‚°μ„ μ‚¬μš©ν•˜λŠ” λͺ¨λ“ˆ
    • import λ₯Ό 톡해 λͺ¨λ“ˆμ΄ κ³΅κ°œν•œ μžμ‚° 쀑 일뢀 λ˜λŠ” 전체λ₯Ό 선택해 μžμ‹ μ˜ μŠ€μ½”ν”„ λ‚΄λ‘œ λΆˆλŸ¬λ“€μ—¬ μž¬μ‚¬μš©ν•  수 μžˆλ‹€.

μž₯점

  • μ½”λ“œμ˜ λ‹¨μœ„λ₯Ό λͺ…ν™•νžˆ λΆ„λ¦¬ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ성할 수 μžˆλ‹€.
  • μž¬μ‚¬μš©μ„±μ΄ μ’‹μ•„ 개발 νš¨μœ¨μ„±κ³Ό μœ μ§€λ³΄μˆ˜μ„±μ„ 높일 수 μžˆλ‹€.

2. μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ λͺ¨λ“ˆ

  • μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λͺ¨λ“ˆ 성립을 μœ„ν•΄ 파일 μŠ€μ½”ν”„λ‚˜ import, exportλ₯Ό μ§€μ›ν•˜μ§€ μ•Šμ•˜λ‹€. (κ³Όκ±°)
  • μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ μ—¬λŸ¬ 개의 파일둜 λΆ„λ¦¬ν•˜μ—¬ script νƒœκ·Έλ‘œ λ‘œλ“œν•΄λ„ ν•˜λ‚˜μ˜ 파일 내에 μžˆλŠ” κ²ƒμ²˜λŸΌ λ™μž‘ν•œλ‹€.
  • 이둜 인해 μ „μ—­ λ³€μˆ˜κ°€ μ€‘λ³΅λ˜λŠ” λ“±μ˜ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆλ‹€.
  • μžλ°”μŠ€ν¬λ¦½νŠΈ λ‚΄μ—μ„œ λͺ¨λ“ˆ μ‹œμŠ€ν…œμ„ λ§Œλ“€κ³ μž ν•˜λ©΄μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈ λͺ¨λ“ˆ μ‹œμŠ€ν…œμ€ CommonJS 와 AMD μ§„μ˜μœΌλ‘œ λ‚˜λ‰˜μ—ˆλ‹€.
  • Node.jsλŠ” 사싀상 λͺ¨λ“ˆ μ‹œμŠ€ν…œμ˜ ν‘œμ€€μΈ CommonJSλ₯Ό μ±„νƒν–ˆμœΌλ©° 파일 λ³„λ‘œ 독립적인 파일 μŠ€μ½”ν”„(λͺ¨λ“ˆ μŠ€μ½”ν”„)λ₯Ό κ°–λŠ”λ‹€.

3. ES6 λͺ¨λ“ˆ(ESM)

  • ES6μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ™μž‘ν•˜λŠ” λͺ¨λ“ˆ κΈ°λŠ₯이 좔가됐닀. (IE μ œμ™Έ)
  • ESM μ‚¬μš©λ²• : scriptνƒœκ·Έμ— type=module μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό μΆ”κ°€
  • 일반적인 μžλ°”μŠ€ν¬λ¦½νŠΈ 파일과의 ꡬ뢄을 μœ„ν•΄ ν™•μž₯μžλŠ” mjsλ₯Ό ꢌμž₯ν•œλ‹€.

3.1 λͺ¨λ“ˆ μŠ€μ½”ν”„

  • λ…μžμ μΈ λͺ¨λ“ˆ μŠ€μ½”ν”„λ₯Ό κ°–λŠ”λ‹€.
  • λͺ¨λ“ˆ λ‚΄μ—μ„œ var둜 μ„ μ–Έν•œ λ³€μˆ˜λŠ” μ „μ—­ λ³€μˆ˜κ°€ μ•„λ‹ˆλ©° window 객체의 ν”„λ‘œνΌν‹°λ„ μ•„λ‹ˆλ‹€.

3.2 export ν‚€μ›Œλ“œ

  • λͺ¨λ“ˆ λ‚΄λΆ€μ—μ„œ μ„ μ–Έν•œ λͺ¨λ“  μ‹λ³„μžλŠ” 기본적으둜 ν•΄λ‹Ή λͺ¨λ“ˆ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€.
  • λͺ¨λ“ˆ λ‚΄λΆ€μ—μ„œ μ„ μ–Έν•œ μ‹λ³„μžλ₯Ό 외뢀에 κ³΅κ°œν•˜μ—¬ λ‹€λ₯Έ λͺ¨λ“ˆλ“€μ΄ μž¬μ‚¬μš©ν•  수 있게 ν•˜κΈ° μœ„ν•΄ export ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.
  • export ν‚€μ›Œλ“œλŠ” μ„ μ–Έλ¬Έ μ•žμ— μ‚¬μš©ν•œλ‹€.
  • λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“± λͺ¨λ“  μ‹λ³„μžλ₯Ό export ν•  수 μžˆλ‹€.
  • export ν•  λŒ€μƒμ„ ν•˜λ‚˜μ˜ 객체둜 κ΅¬μ„±ν•˜μ—¬ ν•œ 번만 export ν•  수 μžˆλ‹€.

3.3 import ν‚€μ›Œλ“œ

  • λ‹€λ₯Έ λͺ¨λ“ˆμ΄ export ν•œ μ‹λ³„μžλ₯Ό μžμ‹ μ˜ λͺ¨λ“ˆ μŠ€μ½”ν”„ λ‚΄λΆ€λ‘œ λ‘œλ“œν•˜κΈ° μœ„ν•΄ import ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.
  • ESM 의 κ²½μš°μ—λŠ” 파일 ν™•μž₯자λ₯Ό μƒλž΅ν•  수 μ—†λ‹€.
  • ν•œ λ²ˆμ— importλ₯Ό ν•˜κΈ° μœ„ν•΄μ„œλŠ” import λ˜λŠ” μ‹λ³„μžλ₯Ό as 뒀에 μ§€μ •ν•œ μ΄λ¦„μ˜ 객체의 ν”„λ‘œνΌν‹°μ— ν• λ‹Ήν•  수 μžˆλ‹€.
import { pi as PI } from './lib.mjs';

export default

  • λͺ¨λ“ˆμ—μ„œ 단 ν•˜λ‚˜λ§Œ export ν•˜λŠ” 경우 export default ν‚€μ›Œλ“œλ‘œ 곡개λ₯Ό ν•  수 μžˆλ‹€.
  • export defaultλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” 이름 없이 ν•˜λ‚˜μ˜ 값이 export λœλ‹€.
  • export defaultλ₯Ό μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” const, let, var 와 같은 μ •μ˜ ν‚€μ›Œλ“œλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.
profile
ν”„λ‘ νŠΈμ—”λ“œμ— λ°±μ—”λ“œ ν•œ μŠ€ν‘Ό πŸ₯„

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보