[React] React SPA

HannahhhΒ·2022λ…„ 8μ›” 1일
0

React

λͺ©λ‘ 보기
6/30

πŸ” React SPA


πŸ‘€ SPA의 λ“±μž₯λ°°κ²½& κ°œλ…

전톡적인 μ›Ήμ‚¬μ΄νŠΈμ—μ„œλŠ” μ‚¬μš©μžκ°€ μ›Ήμ‚¬μ΄νŠΈ λ‚΄μ˜ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λ©΄, 맀번 νŽ˜μ΄μ§€ 전체(HTML 파일)을 λΆˆλŸ¬μ™€μ•Ό ν–ˆμœΌλ‚˜, SPAλŠ” νŽ˜μ΄μ§€ μ „ν™˜ 전후에 μ€‘λ³΅λ˜λŠ” λΆ€λΆ„(Menu, Footer λ“±)은 μƒˆλ‘œ λΆˆλŸ¬μ˜€μ§€ μ•ŠλŠ”λ‹€.

1990λ…„λŒ€ ν›„λ°˜λΆ€ν„° HTML λ¬Έμ„œ 전체가 μ•„λ‹Œ, ν•„μš”ν•œ λ°μ΄ν„°λ§Œ 전달받아 JavaScriptκ°€ λ™μ μœΌλ‘œ HTMLμš”μ†Œλ₯Ό μƒμ„±ν•΄μ„œ 화면에 λ³΄μ—¬μ£ΌλŠ” 방식이 κ°œλ°œλ˜μ–΄ μ‚¬μš©λ˜κΈ° μ‹œμž‘ν–ˆκ³ , 2000λ…„λŒ€ μ€‘λ°˜λΆ€ν„° μ΄λŸ¬ν•œ 개발 방식을 μ΄μš©ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜, 즉, μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(SPA)이 λ³΄νŽΈν™”λ˜μ—ˆλ‹€


μ •λ¦¬ν•˜λ©΄, SPAλŠ” μ„œλ²„λ‘œλΆ€ν„° μ™„μ „νžˆ μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ₯Ό λΆˆλŸ¬μ˜€λŠ” 것이 μ•„λ‹ˆλΌ 화면을 μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ λ°μ΄ν„°λ§Œ μ„œλ²„μ—μ„œ 전달받아 λΈŒλΌμš°μ €μ—μ„œ ν•΄λ‹Ήν•˜λŠ” λΆ€λΆ„λ§Œ μ—…λ°μ΄νŠΈν•˜λŠ” λ°©μ‹μœΌλ‘œ μž‘λ™ν•˜λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ μ›Ή μ‚¬μ΄νŠΈλ₯Ό λ§ν•œλ‹€.




πŸ‘€ SPA의 μž₯단점


βœ” μž₯점

기쑴의 μ€‘λ³΅λ˜λŠ” μš”μ†Œλ“€μ„ 뢈러였느라 μ„œλ²„μ™€μ˜ λΆˆν•„μš”ν•œ νŠΈλž˜ν”½μ΄ λ°œμƒλ˜λŠ” 것을 방지할 수 있고, λ”μš± λΉ λ₯Έ λ°˜μ‘μ„±μ„ κ°–μΆ”μ–΄ μ‚¬μš©μž κ²½ν—˜μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

(Youtube, facebook, Gmail, airbnb, Netflix...)



βœ” 단점

λΈŒλΌμš°μ €λŠ” 첫 ν™”λ©΄ λ‘œλ”© μ‹œ, HTML νŒŒμΌμ„ 읽어듀인 ν›„ κ·Έ μ•ˆμ˜ script μš”μ†Œμ•ˆμ— μžˆλŠ” JavaScript νŒŒμΌμ„ λ‹€μ‹œ λ°›μ•„μ˜€λŠ” 과정을 κ±°μΉ˜λŠ”λ°, 이 λ•Œ 첫 ν™”λ©΄ λ‘œλ”© μ‹œ HTML νŒŒμΌμ€ 거의 λΉ„μ–΄μžˆκ³ , λŒ€λΆ€λΆ„μ˜ μ½”λ“œκ°€ JavaScript 파일 μ•ˆμ— λ“€μ–΄μžˆλ‹€λ³΄λ‹ˆ μžμ—°μŠ€λŸ½κ²Œ JavaScript 파일의 크기가 크닀.

λ•Œλ¬Έμ— 이 JavaScript νŒŒμΌμ„ κΈ°λ‹€λ¦¬λŠ” μ‹œκ°„μœΌλ‘œ 인해 첫 ν™”λ©΄μ˜ λ‘œλ”© μ‹œκ°„μ΄ 길어진닀.

λ˜ν•œ, κ΅¬κΈ€μ΄λ‚˜ 넀이버 같은 검색 엔진은 HTML νŒŒμΌμ— μžˆλŠ” 자료λ₯Ό λΆ„μ„ν•˜λŠ” λ°©μ‹μœΌλ‘œ 검색 κΈ°λŠ₯을 κ΅¬λ™ν•˜λŠ”λ°, 뢄석(자료 μˆ˜μ§‘)μ‹œ, URL, HTML λ¬Έμ„œ λ‚΄μ˜ 각쒅 νƒœκ·Έ 및 링크λ₯Ό λΆ„μ„ν•œλ‹€. 이 λ•Œ, HTML이 거의 λΉ„μ–΄μžˆλ‹€λ³΄λ‹ˆ μΆ©λΆ„ν•œ 자료λ₯Ό μˆ˜μ§‘ν•˜μ§€ λͺ» ν•˜κΈ° λ•Œλ¬Έμ— 비ꡐ적 검색 엔진 μ΅œμ ν™”κ°€ 쒋지 μ•Šλ‹€.

λ”°λΌμ„œ, 검색 λ…ΈμΆœμ΄ μ€‘μš”ν•œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 검색 엔진 μ΅œμ ν™”μ— λŒ€ν•œ λŒ€μ‘μ±…μ„ λ”°λ‘œ λ§ˆλ ¨ν•΄μ•Όν•˜κ³ , μƒνƒœκ΄€λ¦¬(μ•žμœΌλ‘œ κ°€κΈ°/λ’€λ‘œ κ°€κΈ°)도 ν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— 개발의 λ³΅μž‘λ„κ°€ λŠ˜μ–΄λ‚œλ‹€. κ·ΈλŸ¬λ‚˜ 검색 엔진이 λ°œμ „ν•˜κ³  μžˆκΈ°λ•Œλ¬Έμ— μ΄λŸ¬ν•œ 단점은 사라지고 μžˆλŠ” 좔세이닀.




πŸ‘€ Wireframe

Reactλ₯Ό μ΄μš©ν•΄ μ–΄λ–»κ²Œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ§Œλ“€μ§€ 섀계λ₯Ό ν•œλ‹€κ³  κ°€μ •ν–ˆμ„ λ•Œ, μ–΄λ–€ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ§Œλ“€κ³  이듀을 쑰합할지뢀터 κ΅¬μƒν•œλ‹€.

Youtubeλ₯Ό 예둜 λ“€μžλ©΄, μ•„λž˜μ™€ κ°™λ‹€.



  • 전체 UI와 이에 ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈ



  • κ°€μž₯ μž‘μ€ λ‹¨μœ„μ˜ μ»΄ν¬λ„ŒνŠΈ(content) 뢄석


  • Content μ»΄ν¬λ„ŒνŠΈλŠ” 데이터λ₯Ό μž…λ ₯λ°›μ•„ UI에 맞게 화면에 좜λ ₯ν•œλ‹€. λ˜ν•œ, 클릭 μ‹œ ν•΄λ‹Ή μ˜μƒμ„ μž¬μƒν•œλ‹€.


  • μ˜μƒμ΄ λŒ€κΈ° λͺ©λ‘μ— μžˆμ„ λ•Œ, λ˜λŠ” μž¬μƒ 쀑일 λ•Œλ„ 좜λ ₯λ˜λŠ” μœ„μΉ˜λ§Œ μ‘°κΈˆμ”© λ‹€λ₯Ό 뿐, λ™μΌν•œ λ‚΄μš©μ΄ 화면에 좜λ ₯λœλ‹€.


μœ„μ™€ 같이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ•ˆμ—μ„œ λ‹€λ€„μ§€λŠ” 데이터λ₯Ό μ»΄ν¬λ„ŒνŠΈλ“€λΌλ¦¬ 유기적으둜 주고받을 수 μžˆλ„λ‘ 섀계해야 ν•œλ‹€.




Reference: μ½”λ“œμŠ€ν…Œμ΄μΈ 

0개의 λŒ“κΈ€