πŸ“šμŠ€ν„°λ”” λͺ…

λͺ¨λ˜ν•  수 μžˆλŠ”κ±° λ§žλŠ”κ±°λ‹ˆ?

πŸ“† ν•™μŠ΅ λ‚ μ§œ

2024/02/15(λͺ©) 5:00PM

πŸ“– 11μ£Όμ°¨ ν•™μŠ΅ λ²”μœ„

14μž₯ μ „μ—­ λ³€μˆ˜μ˜ 문제점(200.page ~ 207.page)


πŸŽ―μ „μ—­ λ³€μˆ˜μ˜ 문제점

λ°˜λ“œμ‹œ μ „μ—­ λ³€μˆ˜λ₯Ό μ‚¬μš© ν•΄μ•Όν•˜λŠ”μ§€ λͺ¨λ₯΄κ² λ‹€λ©΄ μ „μ—­ λ³€μˆ˜ 보닀 μ§€μ—­ λ³€μˆ˜λ₯Ό μ§€ν–₯ν•œλ‹€κ³ ν•œλ‹€. μ „μ—­ λ³€μˆ˜μ˜ λ¬Έμ œμ μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

πŸ“Œ 암묡적 κ²°ν•©

μ „μ—­ λ³€μˆ˜λ₯Ό μ„ μ–Έν•œ μ˜λ„λŠ” μ „μ—­, 즉 μ½”λ“œ μ–΄λ””μ„œλ“  μ°Έμ‘°ν•˜κ³  ν• λ‹Ήν•  수 μžˆλŠ” λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κ² λ‹€λŠ” 것이닀.
μ΄λŠ” λͺ¨λ“  μ½”λ“œκ°€ μ „μ—­ λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•˜κ³  λ³€κ²½ν•  수 μžˆλŠ” 암묡적 결합을 ν—ˆμš©ν•˜λŠ” 것이닀.
λ³€μˆ˜μ˜ μœ νš¨λ²”μœ„κ°€ 크면 클수둝 μ½”λ“œμ˜ 가독성이 λ‚˜λΉ μ§€κ³  μ˜λ„μΉ˜ μ•Šκ²Œ μƒνƒœκ°€ λ³€κ²½ 될 수 μžˆλŠ” μœ„ν—˜μ„± λ˜ν•œ λ†’μ•„μ§„λ‹€κ³  ν•œλ‹€.

πŸ“Œ κΈ΄ 생λͺ… μ£ΌκΈ°

μ „μ—­ λ³€μˆ˜λŠ” 생λͺ…μ£ΌκΈ°κ°€ κΈΈλ‹€.λ”°λΌμ„œ λ©”λͺ¨λ¦¬ λ¦¬μ†ŒμŠ€λ„ 였랜 κΈ°κ°„ μ†ŒλΉ„ν•œλ‹€. λ˜ν•œμ „μ—­ λ³€μˆ˜μ˜ μƒνƒœλ₯Ό λ³€κ²½ ν•  수 μžˆλŠ” μ‹œκ°„λ„ κΈΈκ³  κΈ°νšŒλ„ λ§Žλ‹€.
λ”μš±μ΄ var ν‚€μ›Œλ“œλŠ” λ³€μˆ˜μ˜ 쀑볡 선언을 ν—ˆμš©ν•˜λ―€λ‘œ 생λͺ… μ£ΌκΈ°κ°€ κΈ΄ μ „μ—­ λ³€μˆ˜λŠ” λ³€μˆ˜ 이름이 쀑볡될 κ°€λŠ₯ 성이 μžˆλ‹€. λ³€μˆ˜ 이름이 μ€‘λ³΅λ˜λ©΄ μ˜λ„μΉ˜ μ•Šμ€ μž¬ν• λ‹Ήμ΄ 이뀄진닀.

πŸ“Œ μŠ€μ½”ν”„ 체인 μƒμ—μ„œ 쒅점에 쑴재

λ³€μˆ˜λ₯Ό κ²€μƒ‰ν• λ•Œ μ „μ—­λ³€μˆ˜κ°€ κ°€μž₯ λ§ˆμ§€λ§‰μ— κ²€μƒ‰λœλ‹€.
κ·ΈλŸ¬λ―€λ‘œ μ „μ—­ λ³€μˆ˜μ˜ 검색속도가 κ°€μž₯λŠλ¦¬λ‹€. κ²€μƒ‰μ†λ„μ˜ μ°¨μ΄λŠ” κ·Έλ‹€μ§€ 크지 μ•Šμ§€λ§Œ μ†λ„μ˜ μ°¨μ΄λŠ” λΆ„λͺ…νžˆ μžˆλ‹€.

πŸ“Œ λ„€μž„μŠ€νŽ˜μ΄μŠ€ μ˜€μ—Ό

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ κ°€μž₯ 큰 문제점 쀑 ν•˜λ‚˜λŠ” 파일이 λΆ„λ¦¬λ˜μ–΄ μžˆλ‹€ 해도 ν•˜λ‚˜μ˜ μ „μ—­ μŠ€μ½”ν”„λ₯Ό κ³΅μœ ν•œλ‹€λŠ” 것이닀. λ”°λΌμ„œ λ‹€λ₯Έ 파일 λ‚΄μ—μ„œ λ™μΌν•œ μ΄λ¦„μœΌλ‘œ λͺ…λͺ…λœ μ „μ—­ λ³€μˆ˜λ‚˜ μ „μ—­ ν•¨μˆ˜κ°€ 같은 μŠ€μ½”ν”„ 내에 μ‘΄μž¬ν•  경우 μ˜ˆμƒμΉ˜ λͺ»ν•œ κ²°κ³Όλ₯Ό κ°€μ Έμ˜¬ 수 μžˆλ‹€.


🎯 μ „μ—­ λ³€μˆ˜μ˜ μ‚¬μš©μ„ μ–΅μ œν•˜λŠ” 방법

μ•žμ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ λ¬΄λΆ„λ³„ν•œ μ „μ—­ λ³€μˆ˜μ˜ μ‚¬μš©μ€ μœ„ν—˜ν•˜λ‹€.
λ³€μˆ˜μ˜ μŠ€μ½”ν”„λŠ” μ’μ„μˆ˜λ‘ μ’‹λ‹€κ³ ν•œλ‹€.μ „μ—­ λ³€μˆ˜λ₯Ό μ ˆλŒ€ μ‚¬μš©ν•˜μ§€ λ§λΌλŠ” μ˜λ―Έκ°€ μ•„λ‹Œ λ¬΄λΆ„λ³„ν•œ μ „μ—­ λ³€μˆ˜μ˜ λ‚¨λ°œμ€ μ§€μ–‘ν•œλ‹€κ³ ν•œλ‹€. μ „μ—­ λ³€μˆ˜μ˜ μ‚¬μš©μ„ μ–΅μ œν•˜λŠ” λͺ‡κ°€μ§€ 방법에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

πŸ“Œ μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

λͺ¨λ“  μ½”λ“œλ₯Ό μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λ‘œ 감싸면 λͺ¨λ“  λ³€μˆ˜λŠ” μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜μ˜ μ§€μ—­ λ³€μˆ˜κ°€ λœλ‹€.

<script>
(function () {
	var name = 'park'; // μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜μ˜ μ§€μ—­ λ³€μˆ˜
}());

console.log(name); // RefernceError : name is not defined
</script>

이 방법은 μ „μ—­ λ³€μˆ˜λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 라이브러리 등에 자주 μ‚¬μš©λœλ‹€κ³ ν•œλ‹€.

πŸ“Œ λ„€μž„μŠ€νŽ˜μ΄μŠ€ 객체

전역에 λ„€μž„μŠ€νŽ˜μ΄μŠ€ 역할을 λ‹΄λ‹Ήν•  객체λ₯Ό μƒμ„±ν•˜κ³  μ „μ—­ λ³€μˆ˜μ²˜λŸΌ μ‚¬μš©ν•˜κ³  싢은 λ³€μˆ˜λ₯Ό ν”„λ‘œνΌν‹°λ‘œ μΆ”κ°€ν•˜λŠ” 방법이닀.

<script>
var MYAPP = {}

MYAPP.name = 'park';

console.log(MYAPP.name);// park

</script>

λ„€μž„μŠ€νŽ˜μ΄μŠ€ 객체에 λ˜λ‹€λ₯Έ λ„€μž„μŠ€νŽ˜μ΄μŠ€ 객체λ₯Ό ν”„λ‘œνΌν‹°λ‘œ μΆ”κ°€ν•΄μ„œ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό κ³„μΈ΅μ μœΌλ‘œ ꡬ성할 수 μžˆλ‹€.

<script>
var MYAPP = {}

MYAPP.person = {
name : 'park',
age : 25,
}

console.log(MYAPP.person.age);// 25

</script>

🚨 ν•˜μ§€λ§Œ λ„€μž„μŠ€νŽ˜μ΄μŠ€ 객체 μžμ²΄κ°€ μ „μ—­ λ³€μˆ˜μ— ν• λ‹Ήλ˜λ―€λ‘œ κ·Έλ‹€μ§€ μœ μš©ν•˜μ§€ μ•ŠλŠ”λ‹€κ³ ν•œλ‹€.

πŸ“Œ ES6 λͺ¨λ“ˆ

ES6λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜λ©΄ λ”λŠ” μ „μ—­ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€. ES6λͺ¨λ“ˆμ€ 파일자체의 λ…μžμ μΈ λͺ¨λ“ˆμŠ€μ½”ν”„λ₯Ό μ œκ³΅ν•œλ‹€. λ”°λΌμ„œ λͺ¨λ“ˆ λ‚΄μ—μ„œ var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜λŠ” λ”λŠ” μ „μ—­ λ³€μˆ˜κ°€ μ•„λ‹ˆλ©° window 객체의 ν”„λ‘œνΌν‹°λ„ μ•„λ‹ˆλ‹€.

script νƒœ 그에 type="module" μ–΄νŠΈλ¦¬λ·°νŠΈλ₯Ό μΆ”κ°€ν•˜λ©΄ λ‘œλ“œλœ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ€ λͺ¨λ“ˆλ‘œμ„œ λ™μž‘ν•œλ‹€. λͺ¨λ“ˆμ˜ 파일
ν™•μž₯μžλŠ” mjsλ₯Ό ꢌμž₯ν•œλ‹€.

<script type="module" src="app.mjs"></script>

ν•˜μ§€λ§Œ ES6 λͺ¨λ“ˆμ€ IEλ₯Ό ν¬ν•¨ν•œ κ΅¬ν˜• λΈŒλΌμš°μ €μ—μ„œλŠ” λ™μž‘ν•˜μ§€ μ•ŠμœΌλ©°, λΈŒλΌμš°μ €μ˜ ES6 λͺ¨λ“ˆ κΈ°λŠ₯을 μ‚¬μš©ν•˜λ”λΌλ„ νŠΈλžœμŠ€νŒŒμΌλ§μ΄λ‚˜ λ²ˆλ“€λ§μ΄ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— μ•„μ§κΉŒμ§€λŠ” λΈŒλΌμš°μ €κ°€ μ§€μ›ν•˜λŠ” ES6 λͺ¨λ“ˆ κΈ°λŠ₯λ³΄λ‹€λŠ” Webpack λ“±μ˜ λͺ¨λ“ˆ λ²ˆλ“€λŸ¬λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.

πŸ₯„ μ†Œκ° ν•œμŠ€ν‘Ό..

μ „μ—­λ³€μˆ˜λ₯Ό λ‚¨λ°œν•˜μ§€ μ•Šμ•˜μ§€λ§Œ μ•žμœΌλ‘œλ„ μ£Όμ˜ν•˜λ©° μ½”λ”©ν•˜μž.

πŸ‘πŸ»Reference

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ - 이웅λͺ¨ μ§€μŒ

profile
β˜„οΈ

0개의 λŒ“κΈ€