Skip to content

Commit

Permalink
Merge pull request #1267 from Ryan-Dia/ryan-dia
Browse files Browse the repository at this point in the history
48μž₯ λͺ¨λ“ˆ - 강철원
  • Loading branch information
Ryan-Dia authored Jan 24, 2024
2 parents 1b97e74 + 2100693 commit 04c653e
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions docs/48_λͺ¨λ“ˆ/강철원B.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
**TIL(Today I learn) 기둝일** : 2024. 01. 24

# 48. λͺ¨λ“ˆ

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

λͺ¨λ“ˆμ΄λž€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ„±ν•˜λŠ” κ°œλ³„μ  μš”μ†Œλ‘œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ½”λ“œ 쑰각을 λ§ν•©λ‹ˆλ‹€.
λͺ¨λ“ˆμ΄ μ„±λ¦½ν•˜λ €λ©΄ λͺ¨λ“ˆμ€ μžμ‹ λ§Œμ˜ 파일 **μŠ€μ½”ν”„(λͺ¨λ“ˆ μŠ€μ½”ν”„)**λ₯Ό κ°€μ§ˆ 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

>μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” λͺ¨λ“ˆμ˜ μžμ‚°9λͺ¨λ“ˆμ— ν¬ν•¨λ˜μ–΄ μž‡λŠ” λ³€μˆ˜, ν•¨μˆ˜, 객체 λ“±)은 기본적으둜 λΉ„κ³΅κ°œ μƒνƒœμž…λ‹ˆλ‹€.
>μ‰½κ²Œλ§ν•΄ μžμ‹ λ§Œμ˜ 파일 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” λͺ¨λ“ˆμ˜ λͺ¨λ“  μžμ‚°μ€ μΊ‘μŠν™”λ˜μ–΄ λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€.
- λͺ¨λ“ˆμ€ κ³΅κ°œκ°€ ν•„μš”ν•œ μžμ‚°μ— ν•œμ •ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ 선택적 κ³΅κ°œκ°€ κ°€λŠ₯ν•˜κ³  이λ₯Ό `export`라 ν•©λ‹ˆλ‹€.
- λͺ¨λ“ˆ μ‚¬μš©μžλŠ” λͺ¨λ“ˆμ΄ κ³΅κ°œν•œ μžμ‚° 쀑 일뢀 λ„λŠ” 전체λ₯Ό 선택해 μžμ‹ μ˜ μŠ€μ½”ν”„ λ‚΄λ‘œ λΆˆλŸ¬λ“€μ—¬ μž¬μ‚¬μš©ν•  수 있고 이λ₯Ό `import`라고 ν•©λ‹ˆλ‹€.

![image](https://github.com/Ryan-Dia/Javascript-Deep-Dive-Study/assets/76567238/f94f4b6b-972f-44c0-aaea-8d83bd463f22)

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

μžλ°”μŠ€ν¬λ¦½νŠΈ λŸ°νƒ€μž„ ν™˜κ²½μΈ `Node.js`λŠ” λͺ¨λ“ˆ μ‹œμŠ€ν…œμ˜ 사싀상 ν‘œμ€€μΈ `CommonJS`λ₯Ό μ±„νƒν–ˆκ³  λ…μžμ μΈ 진화λ₯Ό 거쳐 κΈ°λ³Έμ μœΌλ‘œλŠ” `CommonJS`사양을 λ”°λ₯΄κ³  μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ `Node.js` ν™˜κ²½μ—μ„œλŠ” νŒŒμΌλ³„λ‘œ 독립적인 파일 μŠ€μ½”ν”„(λͺ¨λ“ˆ μŠ€μ½”ν”„)λ₯Ό κ°–μŠ΅λ‹ˆλ‹€.


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

ES6μ—μ„œλŠ” ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄νŠΈ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ™μž‘ν•˜λŠ” λͺ¨λ“ˆ κΈ°λŠ₯을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

### 1) λͺ¨λ“ˆ μŠ€μ½”ν”„

- ESM은 λ…μžμ μΈ λͺ¨λ“ˆ μŠ€μ½”ν”„λ₯Ό κ°–μŠ΅λ‹ˆλ‹€.
- ESM이 μ•„λ‹Œ 일반적인 μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ€ script νƒœκ·Έλ‘œ λΆ„λ¦¬ν•΄μ„œ λ‘œλ“œν•΄λ„ λ…μžμ μΈ λͺ¨λ“ˆ μŠ€μ½”ν”„λ₯Ό 갖지 μ•ŠμŠ΅λ‹ˆλ‹€.

### 2) export ν‚€μ›Œλ“œ

- λͺ¨λ“ˆ λ‚΄λΆ€μ—μ„œ μ„ μ–Έν•œ μ‹λ³„μžλ₯Ό 외뢀에 κ³΅κ°œν•˜μ—¬ λ‹€λ₯Έ λͺ¨λ“ˆμ΄ μž¬μ‚¬μš©ν•  수 있게 ν•˜λ €λ©΄ `export`ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.
- export ν‚€μ›Œλ“œλŠ” μ„ μ–Έλ¬Έ μ•žμ— μ‚¬μš©ν•©λ‹ˆλ‹€. 이러써 λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“± λͺ¨λ“  μ‹λ³„μžλ₯Ό `export`ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

### 3) import ν‚€μ›Œλ“œ

- λ‹€λ₯Έ λͺ¨λ“ˆμ—μ„œ κ³΅κ°œν•œ μ‹λ³„μžλ₯Ό μžμ‹ μ˜ λͺ¨λ“ˆ μŠ€μ½”ν”„ λ‚΄λΆ€λ‘œ λ‘œλ“œν•˜λ €λ©΄ `import`ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
- λ‹€λ₯Έ λͺ¨λ“ˆμ΄ `export`ν•œ μ‹λ³„μž μ΄λ¦„μœΌλ‘œ `import`ν•΄μ•Ό ν•˜λ©° `ESM`의 경우 파일 ν™•μž₯자λ₯Ό μƒλž΅ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

0 comments on commit 04c653e

Please sign in to comment.