header-img
Info :
728x90

μƒνƒœλ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κ³  λ³΄μ—¬μ£ΌλŠ” 것이 ν”„λ‘ νŠΈμ—”λ“œ μ—­λŸ‰μ˜ ν•΅μ‹¬μ΄λΌλŠ”λ°.. μ—¬κΈ°μ„œ 자주 λ‚˜μ˜€λŠ” μš©μ–΄μΈ 'μƒνƒœ 관리'λŠ” 무엇인가?

 

Front-End μ—μ„œμ˜ 'μƒνƒœκ΄€λ¦¬'λž€?

1. 데이터λ₯Ό μ„€κ³„λœ UI/UX에 맞게 μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν•˜λŠ” 일이며, 2. λ„€νŠΈμ›Œν¬λ₯Ό 톡해 μ„œλ²„λ‘œ μ „λ‹¬λ˜λŠ” client의 μš”μ²­μ— 따라 λ³€ν™”ν•˜λŠ” μƒνƒœλ₯Ό κ΄€λ¦¬ν•˜λŠ” 일.

 

μƒνƒœκ΄€λ¦¬ 방법

1. ν”„λ ˆμž„μ›Œν¬ λ“±μž₯

- React, Vue, Svelte λ“±μ˜ ν”„λ ˆμž„μ›Œν¬ λ“±μž₯

- μ•΅κ·€λŸ¬μ˜ λ“±μž₯으둜 μƒνƒœλŠ” 과거의 DOMμ—μ„œ νƒˆμΆœν•  수 있게 λ˜μ—ˆλ‹€. front-end κ°œλ°œμžλŠ” DOM이 μ•„λ‹Œ JavaScriptμ—μ„œ μƒνƒœλ₯Ό 관리할 수 있게 λ˜μ—ˆλ‹€. 즉, DOM에 μ ‘κ·Όν•˜λŠ” 둜직이 ν•„μš”μ—†μ–΄μ§€κ²Œ λ˜μ—ˆλ‹€λŠ” 것이닀. 거기에닀 ν•„μš”ν•œ μƒνƒœλ“€μ„ controler에 λͺ¨μ•„μ„œ κ΄€λ¦¬ν•˜κ²Œ λ˜λ©΄μ„œ 데이터에 μ΄ˆμ μ„ 맞좘 개발이 κ°€λŠ₯ν•΄μ‘Œλ‹€.

- μƒνƒœ Data 값이 λ°”λ€Œλ©΄ μž‘μ—…μ΄ μˆ˜ν–‰λ˜λ„λ‘ ν•˜μ—¬ λ¬Έμ œκ°€ 생기면 μ–΄λ””μ„œ λ°œμƒν–ˆλŠ”μ§€ μ•Œ 수 있게 λ˜μ—ˆλ‹€. 이 λ˜ν•œ, μ–Έμ œ μ–΄λ–»κ²Œ λ°œμƒν–ˆλŠ”μ§€μ— λŒ€ν•œ 디버깅은 κ³„μ†ν•˜μ—¬ κ³ λ―Όν•΄μ•Όν•œλ‹€.

2. 라이브러리 λ“±μž₯

- Redux와 같은 라이브러리의 λ“±μž₯으둜 μ–Έμ œ μ–΄λ–»κ²Œ μƒνƒœκ°€ λ³€ν™”λ˜μ—ˆλŠ”μ§€μ— λŒ€ν•œ μ œμ–΄κ°€ ν•œκ²° κ°„νŽΈν•΄μ§. ReduxλŠ” fluxνŒ¨ν„΄μ„ λ„μž…ν•˜μ—¬ 단방ν–₯ λ°μ΄ν„°νλ¦„μœΌλ‘œ μƒνƒœλ₯Ό μ œμ–΄ν•œλ‹€. - 이 덕에 디버깅이 맀우 μ‰¬μ›Œμ§.

** fluxνŒ¨ν„΄ μ΄λž€?
- 기쑴에 μ‚¬μš©λ˜λ˜ MVC(Model-View-Controler)νŒ¨ν„΄μ˜ 단점을 λ³΄μ™„ν•˜κ³ μž 페이슀뢁(Facebook)μ—μ„œ λ°œν‘œν•œ νŒ¨ν„΄
- ꡬ.MVC pattern)  μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€μ™€ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 처리λ₯Ό ν•˜λŠ” ꡬ간이 λͺ…ν™•ν•˜κ²Œ λ‚˜λ‰˜μ–΄μ Έ μžˆμ–΄, μ—¬λŸ¬ μ‚¬λžŒκ³Ό κ°œλ°œν•  λ•Œ 각자 맑은 뢀뢄에 λŒ€ν•΄μ„œλ§Œ κ°œλ°œν•  수 μžˆλ‹€λŠ” μž₯점을 가지고 μžˆμ–΄μ„œ 많이 μ‚¬μš©λ˜μ–΄ μ™”μŒ. but. modelκ³Ό viewκ°€ μ„œλ‘œ 'μ–‘λ°©ν–₯'으둜 μ˜μ‘΄λ˜μ–΄ μžˆλŠ” 관계 λ•Œλ¬Έμ— ν”„λ‘œμ νŠΈμ˜ 규λͺ¨κ°€ 점점 컀짐에 따라 ν”„λ‘œμ νŠΈμ˜ λ³΅μž‘λ„ λ˜ν•œ 같이 μ»€μ§€κ²Œ λ˜λŠ” 단점이 쑴재
- κ°€μž₯ 큰 νŠΉμ§•μ€ >>단방ν–₯ 데이터 흐름<< : 단방ν–₯ 데이터 흐름을 μ΄μš©ν•˜λ©΄ λ°μ΄ν„°μ˜ λ³€ν™”λ₯Ό μ˜ˆμΈ‘ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€ 수 있게 λœλ‹€.

1. Action: νŠΉμ • 행동을 ν•˜κΈ° μœ„ν•œ μ•‘μ…˜μ„ 의미. 일반적으둜 νƒ€μž…κ³Ό Dataλ₯Ό λ‹΄κ³  있음.
2. Dispatcher: 전달받은 Action에 λ§žλŠ” νŠΉμ • Callback μ²˜λ¦¬κ°€ μ΄λ£¨μ–΄μ§€λŠ” μž₯μ†Œ. 처리된 Dataλ₯Ό Store에 전달.
3. Store: Dispatcherμ—μ„œ 처리된 데이터듀을 λ³΄κ΄€ν•˜κ³  μžˆλŠ” μž₯μ†Œ
4. View: 말 κ·ΈλŒ€λ‘œ 화면을 의미. Store에 μ €μž₯λ˜μ–΄ μžˆλŠ” Dataλ₯Ό κ°€μ Έμ™€μ„œ μ‚¬μš©μžμ—κ²Œ 보여쀄 수 있음.

- Redux의 경우 μ „μ—­ μƒνƒœ μ €μž₯μ†Œλ₯Ό μ œκ³΅ν•˜κ³ , Props drilling λ¬Έμ œλ„ 해결함. 특히 react-deduxλ‚˜ μ΅œκ·Όμ— λ‚˜μ˜¨ Recoil 등은 λ¦¬μ•‘νŠΈμ—μ„œ λ¦¬λ Œλ”λ₯Ό λ°©μ§€ν•΄μ£ΌλŠ” μ΅œμ ν™” κΈ°λŠ₯κΉŒμ§€ λ“€μ–΄μžˆμ–΄ μ„±λŠ₯μ΄μŠˆκΉŒμ§€ ν•΄κ²°ν•΄μ€€λ‹€. 

** Props drilling: Props(κΈ°λŠ₯)을 μ‚¬μš©ν•˜λŠ” λ ˆλ²¨μ— 도달할 λ•ŒκΉŒμ§€ ν•„μš”ν•˜μ§€ μ•Šλ”λΌλ„ 계속 κ·Έ λ ˆλ²¨μ„ μ°Ύμ•„μ„œ λ‚΄λ €κ°€λŠ” ν˜„μƒ

- ν˜„λŒ€μ˜ 웹은 μ›Ήμ•±μœΌλ‘œ μ§„ν™”ν•˜κ³  μžˆλŠ”λ°.. ν•˜λ‚˜μ˜ νŽ˜μ΄μ§€μ—μ„œ μ—¬λŸ¬κ°€μ§€ 정보λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ 동기화 해쀄 ν•„μš”μ„±μ΄ μžˆλ‹€. μ—¬κΈ°μ„œ out-of-date λ¬Έμ œκ°€ λ°œμƒν•œλ‹€. 뿐만 μ•„λ‹ˆλΌ μ „μ—­μƒνƒœμ˜ 경우 ν•„μš”ν•œ μ‹œμ μ΄ μ•„λ‹Œ μ΅œμƒλ‹¨μ—μ„œ 데이터 fetchλ₯Ό ν•˜κ²Œ λ˜λ©΄μ„œ 데이터 흐름 νŒŒμ•…μ΄ μ–΄λ €μ›Œμ§„λ‹€.

3. SWR(Stale-While-Revalidate)

- 원격 데이터 fetchλ₯Ό μœ„ν•œ λͺ¨λ“ˆ. 원격 μ„œλ²„μ˜ μƒνƒœλ₯Ό κ°€μ Έμ™€μ„œ React μ»΄ν¬λ„ŒνŠΈμ— μ€€λ‹€.

 

μ•žμœΌλ‘œμ˜ μƒνƒœκ΄€λ¦¬

1. μ‹€μ‹œκ°„ & μ•±
2. μ„œλ²„λ¦¬μŠ€

- 데이터(μƒνƒœ)λ₯Ό λ‹€λ₯΄λŠ” 둜직이 점점 λ°±μ—”λ“œμ—μ„œ ν”„λ‘ νŠΈμ—”λ“œλ‘œ λ„˜μ–΄μ˜€λŠ” 좔세이닀. 이λ₯Ό 더 효율적으둜 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄μ„œ ν”„λ‘ νŠΈμ—”λ“œλŠ” ν΄λΌμš°λ“œλ₯Ό 톡해 μ„œλ²„ 없이 μž‘μ—…μ„ ν•˜λŠ” ν˜•νƒœκ°€ λ˜μ–΄κ°€κ³  μžˆλ‹€..

- μ„œλ²„λ¦¬μŠ€λŠ” μ‹€μ œ μ„œλ²„κ°€ μ—†λ‹€λŠ” μ˜λ―Έκ°€ μ•„λ‹ˆλΌ, 데이터 처리 둜직만 κ°œλ°œν•˜μ—¬ ν΄λΌμš°λ“œμ— μ˜¬λ¦¬λŠ” 방법을 의미.

 

 

 

μ°Έκ³ 

https://haesoo9410.tistory.com/343

 

<FE> ν”„λ‘ νŠΈμ—”λ“œ μƒνƒœ 관리와 역사

1. μƒνƒœκ΄€λ¦¬λž€ * μ†Œκ°œ  - ν”„λ‘ νŠΈμ—”λ“œν•˜λ©΄ μƒνƒœκ΄€λ¦¬λΌλŠ” 단어λ₯Ό 빼놓을 수 μ—†λ‹€. μƒνƒœλ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κ³  보여 μ£ΌλŠ” 것이 ν”„λ‘ νŠΈμ—”λ“œ μ—­λŸ‰μ˜ 핡심이라 해도 과언이 아닐 것이닀.  - κ·Έλ ‡λ‹€λ©΄

haesoo9410.tistory.com

 

더보기
FRONTEND/React