생각/react

[주특기 과제]

kyunghoonk00k 2022. 9. 30. 11:29
λ°˜μ‘ν˜•

 

πŸ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μœ μ‚¬λ°°μ—΄κ³Ό λ°°μ—΄μ˜ μ°¨μ΄λŠ” λ¬΄μ—‡μΌκΉŒμš”?

μœ μ‚¬λ°°μ—΄μ˜ 각 μš”μ†Œλ₯Ό μˆ˜μ •ν•˜κ³  μ‹Άλ‹€λ©΄ μ–΄λ–€ 과정을 κ±°μ³μ•Όν• κΉŒμš”?

 

λ°°μ—΄ :

ν•˜λ‚˜μ˜ λ³€μˆ˜μ— ν• λ‹Ήν•΄ κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 데이터 νƒ€μž…μ΄λ‹€γ€‚

 

μœ μ‚¬ λ°°μ—΄ :

λ°°μ—΄κ³Ό μœ μ‚¬ν•œ 객체λ₯Ό λ§ν•œλ‹€.

 

μœ μ‚¬ 배열은 ν•¨μˆ˜μ—μ„œ 처리 결과둜 배열을 λ°˜ν™˜ν•˜κ³  싢을 λ•Œ λ˜λŠ”, Arrayμ—μ„œ 기본으둜 λ‚΄ν¬λ˜μ–΄μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  μ‹Άμ§€ μ•Šκ±°λ‚˜ Array에 λ‚΄ν¬λ˜μ–΄μžˆμ§€ μ•Šμ€ κΈ°λŠ₯을 μ œκ³΅ν•˜κ³  싢을 λ•Œ μ‚¬μš©ν•œλ‹€.

 

1. 숫자 ν˜•νƒœμ˜ indexing이 κ°€λŠ₯ν•  것

2. length 속성을 포함할 것

μˆ˜μ • κ³Όμ •:

1-1. κ°„μ ‘ν˜ΈμΆœ ν™œμš©

1-2. RestνŒŒλΌλ―Έν„° ν™œμš©

1-3. Array.from λ©”μ„œλ“œ ν™œμš©

등을 ν™œμš©ν•˜μ—¬ λ°°μ—΄λ‘œ λ³€ν™˜μ‹œμΌœ μ€€ λ’€ μš”μ†Œλ₯Ό μˆ˜μ •ν•œλ‹€.

 

πŸ” λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈ A와 μžμ‹ μ»΄ν¬λ„ŒνŠΈ Bκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈ AλŠ” state둜 {name: "λ₯΄νƒ„이"}λ₯Ό κ°€μ§€κ³  있고, μžμ‹μΈ μ»΄ν¬λ„ŒνŠΈ Bμ—κ²Œ name 값을 λ„˜κ²¨μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. μ»΄ν¬λ„ŒνŠΈ BλŠ” λ°›μ•„μ˜¨ name을 화면에 뿌렀주고 μžˆμŠ΅λ‹ˆλ‹€.

μ»΄ν¬λ„ŒνŠΈ A의 stateκ°€ {name: "μ§„λ„μ‚¬μš°λ₯΄μŠ€"}둜 λ°”λ€Œμ—ˆμ„ λ•Œ, μ–΄λ–€ 과정을 거쳐 바뀐 값을 화면에 λ³΄μ—¬μ£ΌλŠ” μ§€ 라이프 사이클 흐름을 κ·Έλ €λ³ΌκΉŒμš”?

 

라이프 사이클 : μ»΄ν¬λ„ŒνŠΈκ°€ λ Œλ”λ§μ„ μ€€λΉ„ν•˜λŠ” μˆœκ°„λΆ€ν„°, νŽ˜μ΄μ§€μ—μ„œ μ‚¬λΌμ§ˆ λ•ŒκΉŒμ§€ κ³Όμ •

- μ»΄ν¬λ„ŒνŠΈλŠ” μƒμ„±λ˜κ³  -> μˆ˜μ •(μ—…λ°μ΄νŠΈ)되고 사라진닀

- 생성은 처음으둜 μ»΄ν¬λ„ŒνŠΈλ₯Ό λΆˆλŸ¬μ˜€λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€

- μˆ˜μ •(μ—…λ°μ΄νŠΈ) λ˜λŠ” 경우

1) propsκ°€ λ°”λ€” λ•Œ

2) stateκ°€ λ°”λ€” λ•Œ

3) λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈκ°€ μ—…λ°μ΄νŠΈ λ˜μ—ˆμ„ λ•Œ ( λ¦¬λ Œλ”λ§ ν–ˆμ„ λ•Œ )

4) κ°•μ œλ‘œ μ—…λ°μ΄νŠΈλ₯Ό ν–ˆμ„ 경우 ( forceUpdate() )λ₯Ό 톡해 κ°•μ œλ‘œ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ—…λ°μ΄νŠΈ ν•  수 μžˆλ‹€

-μ œκ±°λŠ” νŽ˜μ΄μ§€λ₯Ό μ΄λ™ν•˜κ±°λ‚˜, μ‚¬μš©μžμ˜ 행동 (μ‚­μ œ λ²„νŠΌ 클릭)으둜 인해 μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ

μ‚¬λΌμ§€λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€)

 

----- 라이프 사이클 흐름 -----

 

- **Mounting**: μ»΄ν¬λ„ŒνŠΈκ°€ 화면에 λ‚˜νƒ€λ‚¨

 

### Mounting

 

μ»΄ν¬λ„ŒνŠΈμ˜ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ–΄ DOM 상에 μ‚½μž…λ˜λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€. Mounting은 Lifecyle이 μ’…λ£Œλ  λ•ŒκΉŒμ§€ ν•œ 번만 μΌμ–΄λ‚©λ‹ˆλ‹€. μ•„λž˜ λ©”μ„œλ“œλ“€μ΄ 이 λ‹¨κ³„μ—μ„œ μˆœμ„œλŒ€λ‘œ ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

· **constructor**: μ»΄ν¬λ„ŒνŠΈμ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μƒˆλ‘œ λ§Œλ“€ λ•Œλ§ˆλ‹€ μƒμ„±μž λ©”μ„œλ“œκ°€ ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

· static getDerivedStateFromProps

 

· **render**: 화면에 ν‘œν˜„λ  JSXλ₯Ό λ°˜ν™˜ν•˜κ³  화면에 κ·Έλ¦½λ‹ˆλ‹€.

 

· **componentDidMount**: μ»΄ν¬λ„ŒνŠΈκ°€ 화면에 λͺ¨λ‘ κ·Έλ €μ§„ 이후 ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

componentDidMount λ©”μ„œλ“œλŠ” 첫 λ Œλ”λ§ 이후 μ‹€ν–‰λ©λ‹ˆλ‹€. μ—”λ“œν¬μΈνŠΈμ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ 데이터λ₯Ό λΆˆλŸ¬μ™€μ•Ό ν•˜λŠ” 경우라면, API ν˜ΈμΆœμ„ ν•˜κΈ° 쒋은 μœ„μΉ˜μž…λ‹ˆλ‹€. 데이터λ₯Ό λ°›μ•„ 올 λ•Œ setState λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈλ₯Ό μ—…λ°μ΄νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

- **Updating**: μ»΄ν¬λ„ŒνŠΈκ°€ μ—…λ°μ΄νŠΈλ¨

 

### Updating

 

props λ˜λŠ” stateκ°€ λ³€κ²½λ˜μ–΄ μ»΄ν¬λ„ŒνŠΈκ°€ μ—…λ°μ΄νŠΈλ˜λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€. μ•„λž˜ λ©”μ„œλ“œλ“€μ΄ 이 λ‹¨κ³„μ—μ„œ μˆœμ„œλŒ€λ‘œ ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

· static getDerivedStateFromProps

 

· shouldComponentUpdate

 

· **render**: 데이터가 λ³€κ²½λ˜λ©΄ μžλ™μœΌλ‘œ ν˜ΈμΆœλ©λ‹ˆλ‹€. 화면을 λ‹€μ‹œ κ·Έλ¦½λ‹ˆλ‹€.

 

· getSnapshotBeforeUpdate

 

· **componentDidUpdate**: 화면이 λ‹€μ‹œ κ·Έλ €μ§„ 이후 ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

- **Unmounting**: μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ 사라짐

 

### Unmounting

 

μ»΄ν¬λ„ŒνŠΈκ°€ DOM μƒμ—μ„œ μ œκ±°λ˜λŠ” λ‹¨κ³„μž…λ‹ˆλ‹€.

 

·**componentWillUnmount**: μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ 제거되기 전에 ν˜ΈμΆœλ©λ‹ˆλ‹€.

 

 

### 흐름 μ„€λͺ…

 

μ»΄ν¬λ„ŒνŠΈ Aμ—μ„œ λ₯΄νƒ„μ΄λΌλŠ” stateλ₯Ό μ§„λ„μ‚¬μš°λ₯΄μŠ€λ³€κ²½ ->

 

λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ—μ„œ Updating이 λ°œμƒ ->

 

shouldComponentUpdate κ°€ μ‹€ν–‰ ->

 

바뀐 propsλ₯Ό μ΄μš©ν•˜μ—¬ λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈμ˜ λ Œλ”λ§ ->

 

λ§ˆμ°¬κ°€μ§€λ‘œ 바뀐 propsλ₯Ό 이어받아 μ»΄ν¬λ„ŒνŠΈ B의 λ Œλ”λ§μ΄ 싀행됨

 

 

 

πŸ” μ–‘λ°©ν–₯ 바인딩은 λ¬΄μ—‡μΌκΉŒμš”?

μ–‘λ°©ν–₯ 바인딩을 μ‚¬μš©ν•˜λŠ” 경우 λ¦¬λ Œλ”λ§μ΄ μ–΄λ–»κ²Œ μ΄λ£¨μ–΄μ§ˆ μ§€ κ·Έλ €λ³΄μ„Έμš”.

(λΆ€λͺ¨ μ»΄ν¬λ„ŒνŠΈ A와 μžμ‹ μ»΄ν¬λ„ŒνŠΈ Bκ°€ μžˆμŒμ„ κ°€μ •ν•˜κ³  κ·Έλ €λ΄…μ‹œλ‹€.)

 

데이터 λ°”μΈλ”©μ΄λž€?

두 데이터 ν˜Ήμ€ μ •λ³΄μ˜ μ†ŒμŠ€λ₯Ό μΌμΉ˜μ‹œν‚€λŠ” κΈ°λ²•μœΌλ‘œ, 화면에 λ³΄μ΄λŠ” 데이터와 λΈŒλΌμš°μ € λ©”λͺ¨λ¦¬μ— μžˆλŠ” 데이터(μ—¬λŸ¬κ°œμ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ 객체)λ₯Ό μΌμΉ˜μ‹œν‚€λŠ” 것을 λ§ν•œλ‹€.

 

μ–‘λ°©ν–₯ 데이터 바인딩

 

μž₯점 : μ½”λ“œμ˜ μ‚¬μš©λ©΄μ—μ„œ μ½”λ“œλŸ‰μ„ 크게 μ€„μ—¬μ€Œ

단점 : 변화에 따라 DOM 객체 전체λ₯Ό λ Œλ”λ§ν•΄μ£Όκ±°λ‚˜ 데이터λ₯Ό λ°”κΏ”μ£Όλ―€λ‘œ, μ„±λŠ₯이 κ°μ†Œλ˜λŠ” κ²½μš°κ°€ 있음

μ»¨νŠΈλ‘€λŸ¬μ—μ„œ model이 변경됨 -> view변경됨

viewμ—μ„œ scope model이 변경됨 -> μ»¨νŠΈλ‘€λŸ¬μ—μ„œ model이 변경됨

 

μ΄λ ‡κ²Œ μ»¨νŠΈλ‘€λŸ¬μ™€ λ·° μ–‘μͺ½μ˜ 데이터 μΌμΉ˜κ°€ λͺ¨λ‘ κ°€λŠ₯ν•œ 것이 μ–‘λ°©ν–₯ 데이터 바인딩이닀. λ°μ΄ν„°μ˜ λ³€ν™”λ₯Ό 감지해 ν…œν”Œλ¦Ώκ³Ό κ²°ν•©ν•΄ 화면을 κ°±μ‹ , ν™”λ©΄μ˜ μž…λ ₯에 따라 데이터λ₯Ό κ°±μ‹ ν•˜λŠ” 것이닀. (HTML -> JS, JS -> HTML μ–‘μͺ½ λͺ¨λ‘ κ°€λŠ₯)

 

μ–‘λ°©ν–₯ 데이터 바인딩은 λ°μ΄ν„°μ˜ 변경을 ν”„λ ˆμž„μ›Œν¬μ—μ„œ κ°μ§€ν•˜κ³  μžˆλ‹€κ°€, 데이터가 λ³€κ²½λ˜λŠ” μ‹œμ μ— DOM 객체에 λ Œλ”λ§μ„ ν•΄μ£Όκ±°λ‚˜ νŽ˜μ΄μ§€ λ‚΄μ—μ„œ λͺ¨λΈμ˜ 변경을 감지해 JS μ‹€ν–‰λΆ€μ—μ„œ λ³€κ²½ν•œλ‹€. μž…λ ₯된 κ°’μ΄λ‚˜ λ³€κ²½λœ 값에 따라 λ‚΄μš©μ΄ λ°”λ‘œ λ°”λ€ŒκΈ° λ•Œλ¬Έμ— λ”°λ‘œ 체크해주지 μ•Šμ•„λ„ λœλ‹€.

 

μ–‘λ°©ν–₯ 데이터 바인딩은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ³΅μž‘λ„κ°€ μ¦κ°€ν•˜λ©΄ μ¦κ°€ν• μˆ˜λ‘ 빛을 λ°œν•œλ‹€. μˆ˜λ§Žμ€ μ½”λ“œμ˜ 양을 쀄여쀄 뿐만 μ•„λ‹ˆλΌ μœ μ§€λ³΄μˆ˜λ‚˜ μ½”λ“œλ₯Ό κ΄€λ¦¬ν•˜κΈ° 맀우 μ‰½κ²Œ ν•΄μ£ΌκΈ° λ•Œλ¬Έμ΄λ‹€.

 

 

 

 

πŸ” event listenerλŠ” λ“±λ‘λ˜λ©΄ λ°˜λ“œμ‹œ ν•΄μ œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

ν΄λž˜μŠ€ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ μ‚¬λΌμ§ˆ λ•Œ(unmount 될 λ•Œ) event listenerλ₯Ό ν•΄μ œν•©λ‹ˆλ‹€. (componentWillUnmountμ—μ„œμš”!)

그럼 라이프사이클 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” event listenerλ₯Ό ν•΄μ œν•  λ•Œ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒμš”?

 

useEffect

ν•¨μˆ˜ν˜• μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” 각각의 라이프사이클 λ©”μ†Œλ“œλ₯Ό useEffect ν•˜λ‚˜λ‘œ ν†΅μΌμ‹œν‚¬ 수 μžˆλ‹€. λŒ€μ‹  dependencyλ₯Ό μ„ μ–Έν•˜μ—¬ μ‹œμ μ„ κ΅¬λΆ„ν•œλ‹€.

 

useEffect(() => {

console.log('hi')

}, [/* dependency μ„ μ–Έν•˜λŠ” κ³³ */])

빈 배열을 μ„ μ–Έν•˜λ©΄ 졜초 λ‘œλ“œμ‹œμ—λ§Œ λ Œλ”λ§μ΄ λœλ‹€.

 

이벀트 ν•΄μ œν•˜κΈ°

이벀트λ₯Ό λ“±λ‘ν•˜κ³  λ‚œ λ’€ μ„±λŠ₯ μ €ν•˜λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ»΄ν¬λ„ŒνŠΈκ°€ μ–Έλ§ˆμš΄νŠΈ 될 λ•Œ κΌ­ 이벀트 등둝을 ν•΄μ œν•΄μ£Όμ–΄ν– ν•œλ‹€. ν•¨μˆ˜ν˜• ν΄λž˜μŠ€μ—μ„œλŠ” useEffect의 λ‚΄λΆ€ ν•¨μˆ˜μ˜ returnκ°’μœΌλ‘œ removeEventListenerλ₯Ό 톡해 ν•΄μ œν•΄μ£Όλ©΄ λœλ‹€.

 

useEffect(() => {

document.addEventListener();



return () => {

document.removeEventListener();

}

}, [])

 

 

πŸ” λ¦¬μ•‘νŠΈμ—μ„œλŠ” DOM μš”μ†Œμ— μ ‘κ·Όν•˜κΈ° μœ„ν•΄ 주둜 refλ₯Ό μ”λ‹ˆλ‹€.

domcument.getElementsByClassName 등을 μ“°λŠ” 게 μ•„λ‹ˆλΌ refλ₯Ό μ“°λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒμš”?

 

refλ₯Ό μ‚¬μš©ν•˜λŠ” 이유?

idλŠ” μœ μΌν•΄μ•Ό ν•˜μ§€λ§Œ μ»΄ν¬λ„ŒνŠΈ μž¬μ‚¬μš©μ„ ν•œλ‹€λ©΄ 쀑볡될 κ°€λŠ₯성이 μžˆλ‹€.

 

refλŠ” μ „μ—­μ μœΌλ‘œ μž‘λ™ν•˜μ§€ μ•Šκ³  μ»΄ν¬λ„ŒνŠΈ λ‚΄λΆ€μ—μ„œλ§Œ μž‘λ™ν•œλ‹€.

 

μ–΄λ–¨ λ•Œ μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”κ°€?

DOM을 κΌ­ μ§μ ‘μ μœΌλ‘œ κ±΄λ“œλ €μ•Ό ν•  λ•Œ μ‚¬μš©ν•œλ‹€.

 

νŠΉμ • input에 포컀슀 μ£ΌκΈ°

슀크둀 λ°•μŠ€ μ‘°μž‘ν•˜κΈ°

Canvas μš”μ†Œμ— κ·Έλ¦Ό 그리기 λ“±

 

μ„ μ–Έμ μœΌλ‘œ 해결될 수 μžˆλŠ” λ¬Έμ œμ—μ„œλŠ” ref μ‚¬μš©μ„ μ§€μ–‘ν•΄μ•Όν•œλ‹€.

 

ref의 μ‚¬μš©μ„ μ΅œλŒ€ν•œ 쀄여야 ν•œλ‹€κ³  λͺ…μ‹œλ˜μ–΄μžˆλ‹€.

 

 

 

 

πŸ” SPA 방식과 MPA 방식은 λ¬΄μ—‡μΈκ°€μš”?

 

SPA vs MPA

- SPA(Single Page Application)λŠ” ν•œ 개(Single)의 Page둜 κ΅¬μ„±λœ Application이닀.

MPA(Multiple Page Application)λŠ” μ—¬λŸ¬ 개(Single)의 Page둜 κ΅¬μ„±λœ Application이닀.

- MPAλŠ” μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œλ§ˆλ‹€ 정적 λ¦¬μ†ŒμŠ€κ°€ λ‹€μš΄λ‘œλ“œλœλ‹€. 맀번 전체 νŽ˜μ΄μ§€κ°€ λ‹€μ‹œ λ Œλ”λ§ λœλ‹€.

반면 SPAλŠ” μ›Ή μ—ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ λͺ¨λ“  정적 λ¦¬μ†ŒμŠ€λ₯Ό 졜초 ν•œ λ²ˆμ— λ‹€μš΄λ‘œλ“œν•œλ‹€.

κ·Έ 이후 μƒˆλ‘œμš΄ νŽ˜μ΄μ§€ μš”μ²­μ΄ μžˆμ„ λ•Œ, νŽ˜μ΄μ§€ 갱신에 ν•„μš”ν•œ λ°μ΄ν„°λ§Œ 전달 λ°›μ•„μ„œ νŽ˜μ΄μ§€λ₯Ό κ°±μ‹ ν•œλ‹€.

- κ·Έλž˜μ„œ SPAλ₯Ό CSR(Client Side Rendering) λ°©μ‹μœΌλ‘œ λ Œλ”λ§ν•œλ‹€κ³  λ§ν•œλ‹€.

κ·Έλž˜μ„œ MPAλ₯Ό SSR(Server Side Rendering) λ°©μ‹μœΌλ‘œ λ Œλ”λ§ν•œλ‹€κ³  λ§ν•œλ‹€.

 

MPA(Multiple Page Application)

- μ—¬λŸ¬ 개(Single)의 Page둜 κ΅¬μ„±λœ Application이닀.

- MPAλŠ” SSR(Server Side Application) λ°©μ‹μœΌλ‘œ λ Œλ”λ§ν•œλ‹€.

μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œλ§ˆλ‹€ μ„œλ²„μ—μ„œ λ Œλ”λ§λœ 정적 λ¦¬μ†ŒμŠ€(HTML, CSS, JavaScript)κ°€ λ‹€μš΄λ‘œλ“œλœλ‹€.

νŽ˜μ΄μ§€ μ΄λ™ν•˜κ±°λ‚˜ μƒˆλ‘œκ³ μΉ¨ν•˜λ©΄ 전체 νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ λ Œλ”λ§ν•œλ‹€.

 

πŸ‘ MPA μž₯점

1. SEO κ΄€μ μ—μ„œ μœ λ¦¬ν•˜λ‹€.

- MPAλŠ” μ™„μ„±λœ ν˜•νƒœμ˜ HTML νŒŒμΌμ„ μ„œλ²„λ‘œλΆ€ν„° μ „λ‹¬λ°›λŠ”λ‹€.

λ”°λΌμ„œ 검색엔진이 νŽ˜μ΄μ§€λ₯Ό ν¬λ‘€λ§ν•˜κΈ°μ— μ ν•©ν•˜λ‹€.

2. 첫 λ‘œλ”© 맀우 μ§§λ‹€.

- μ„œλ²„μ—μ„œ 이미 λ Œλ”λ§ν•΄ κ°€μ Έμ˜€κΈ° λ•Œλ¬Έμ΄λ‹€.

- κ·ΈλŸ¬λ‚˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ JS νŒŒμΌμ„ λͺ¨λ‘ λ‹€μš΄λ‘œλ“œν•˜κ³  μ μš©ν•˜κΈ°μ „ κΉŒμ§€λŠ” 각각의 κΈ°λŠ₯은 λ™μž‘ν•˜μ§€μ•ŠλŠ”λ‹€.

 

πŸ‘Ž MPA 단점

1. μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό μ΄λ™ν•˜λ©΄ κΉœλΉ‘μΈλ‹€. (UX)

- λ§€ νŽ˜μ΄μ§€ μš”μ²­λ§ˆλ‹€ λ¦¬λ‘œλ”©(μƒˆλ‘œκ³ μΉ¨) λ°œμƒ.

μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œλ§ˆλ‹€ 전체 νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ λ Œλ”λ§ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

2. νŽ˜μ΄μ§€ 이동 μ‹œ λΆˆν•„μš”ν•œ ν…œν”Œλ¦Ώλ„ μ€‘λ³΅ν•΄μ„œ λ‘œλ”© (μ„±λŠ₯)

3. μ„œλ²„ λ Œλ”λ§μ— λ”°λ₯Έ λΆ€ν•˜

4. λͺ¨λ°”일 μ•± 개발 μ‹œ 좔가적인 λ°±μ—”λ“œ μž‘μ—… ν•„μš” (생산성)개발이 λ³΅μž‘ν•΄μ§ˆ 수 μžˆλ‹€.

 
λ°˜μ‘ν˜•