Topcit

μ‹±κΈ€νŽ˜μ΄μ§€ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜

Life Log 2024. 11. 10. 18:23
728x90
λ°˜μ‘ν˜•

πŸ’‘ μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(Single Page Application, SPA)λž€?

μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(SPA)λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν•œ ν˜•νƒœλ‘œ, ν•˜λ‚˜μ˜ HTML νŽ˜μ΄μ§€λ₯Ό 톡해 μ‚¬μš©μžμ™€ μƒν˜Έμž‘μš©ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 전톡적인 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” νŽ˜μ΄μ§€ κ°„μ˜ μ΄λ™λ§ˆλ‹€ 전체 νŽ˜μ΄μ§€κ°€ μƒˆλ‘œ λ‘œλ“œλ˜μ§€λ§Œ, SPAμ—μ„œλŠ” νŽ˜μ΄μ§€ μ „ν™˜ μ‹œ ν•„μš”ν•œ λ°μ΄ν„°λ§Œ λΉ„λ™κΈ°μ μœΌλ‘œ λ‘œλ“œν•˜μ—¬ μ‚¬μš©μž κ²½ν—˜(UX)을 κ°œμ„ ν•©λ‹ˆλ‹€.


🌟 μ£Όμš” νŠΉμ§•

  1. λΉ λ₯Έ λ‘œλ”© 속도:

    • 초기 ν•œ 번의 HTML, CSS, JavaScript λ‘œλ“œ μ΄ν›„μ—λŠ” λ°μ΄ν„°λ§Œ λ™μ μœΌλ‘œ κ΅μ²΄ν•©λ‹ˆλ‹€.
    • 전체 νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ λ‘œλ“œν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 응닡 μ‹œκ°„μ΄ μ§§μ•„ μ‚¬μš©μž κ²½ν—˜μ΄ κ°œμ„ λ©λ‹ˆλ‹€.
  2. 비동기 톡신(AJAX):

    • μ„œλ²„μ™€μ˜ ν†΅μ‹ μ—μ„œ AJAXλ‚˜ Fetch APIλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•„μš”ν•œ λ°μ΄ν„°λ§Œ κ°€μ Έμ˜΅λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 화면이 κΉœλ°•μ΄κ±°λ‚˜ μƒˆλ‘œ λ‘œλ“œλ˜μ§€ μ•Šκ³ λ„ λ™μ μœΌλ‘œ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€.
  3. λΌμš°νŒ…(Routing):

    • ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λΌμš°νŒ…μ„ 톡해 URL λ³€κ²½ μ‹œ μ‹€μ œλ‘œ νŽ˜μ΄μ§€λ₯Ό μ΄λ™ν•˜μ§€ μ•Šκ³ λ„, μƒˆλ‘œμš΄ μ½˜ν…μΈ λ₯Ό λ™μ μœΌλ‘œ λ Œλ”λ§ν•©λ‹ˆλ‹€.
    • React, Vue.js, Angular와 같은 ν”„λ ˆμž„μ›Œν¬μ—μ„œλŠ” react-routerλ‚˜ vue-routerλ₯Ό 톡해 λΌμš°νŒ…μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ“ˆ μž₯점과 단점

μž₯점 단점
λΉ λ₯Έ μ‚¬μš©μž κ²½ν—˜ 제곡 초기 λ‘œλ”© μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 수 있음
μ„œλ²„ μš”μ²­ κ°μ†Œ 및 λ„€νŠΈμ›Œν¬ μ ˆμ•½ SEO μ΅œμ ν™”κ°€ μ–΄λ ΅μŠ΅λ‹ˆλ‹€
ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 더 λ§Žμ€ μ œμ–΄ κ°€λŠ₯ λΈŒλΌμš°μ €μ˜ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ 증가

πŸ” 예제 μ‹œλ‚˜λ¦¬μ˜€

예제: μ‡Όν•‘λͺ° μ›Ήμ‚¬μ΄νŠΈ

  • 전톡적인 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜:
    • μ‚¬μš©μžκ°€ μƒν’ˆ λͺ©λ‘ νŽ˜μ΄μ§€μ—μ„œ μƒν’ˆ 상세 νŽ˜μ΄μ§€λ‘œ 이동할 λ•Œλ§ˆλ‹€ 전체 νŽ˜μ΄μ§€κ°€ μƒˆλ‘œ λ‘œλ“œλ©λ‹ˆλ‹€.
  • SPA μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜:
    • μ‚¬μš©μžκ°€ μƒν’ˆ λͺ©λ‘μ—μ„œ μƒν’ˆμ„ ν΄λ¦­ν•˜λ©΄, μƒν’ˆ 상세 μ •λ³΄λ§Œ λΉ„λ™κΈ°μ μœΌλ‘œ 가져와 ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ μ—…λ°μ΄νŠΈλ©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ λΈŒλΌμš°μ €μ˜ μ£Όμ†ŒλŠ” μ—…λ°μ΄νŠΈλ˜μ§€λ§Œ, 전체 νŽ˜μ΄μ§€κ°€ μƒˆλ‘œ λ‘œλ“œλ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

πŸ“Œ λŒ€ν‘œμ μΈ SPA ν”„λ ˆμž„μ›Œν¬

  • React: μ»΄ν¬λ„ŒνŠΈ 기반 UI 라이브러리둜, react-routerλ₯Ό μ‚¬μš©ν•΄ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λΌμš°νŒ…μ„ κ΅¬ν˜„ν•©λ‹ˆλ‹€.
  • Vue.js: κ°„κ²°ν•œ ꡬ쑰와 μ‚¬μš©μ΄ μ‰¬μš΄ λΌμš°νŒ… 도ꡬ인 vue-routerλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.
  • Angular: κ°•λ ₯ν•œ κΈ°λŠ₯을 κ°–μΆ˜ ν”„λ ˆμž„μ›Œν¬λ‘œ, λ‚΄μž₯된 λΌμš°νŒ… λͺ¨λ“ˆμ„ 톡해 SPAλ₯Ό κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

✍️ 마무리

μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λΉ λ₯΄κ³  동적인 μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ„€κ³„λœ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. 특히 λͺ¨λ°”일 ν™˜κ²½μ—μ„œ λΉ λ₯Έ λ°˜μ‘μ„±κ³Ό λ„€νŠΈμ›Œν¬ νš¨μœ¨μ„±μ„ μ œκ³΅ν•  수 μžˆμ–΄, 졜근 λ§Žμ€ μ›Ή κ°œλ°œμ—μ„œ μ±„νƒλ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ, 초기 λ‘œλ”© 속도와 SEO 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)μ΄λ‚˜ 정적 μ‚¬μ΄νŠΈ 생성(SSG)과의 쑰합도 κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•

'Topcit' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

ν˜•μƒκ΄€λ¦¬  (0) 2024.11.10
HashMapμ΄λž€?  (0) 2024.11.10
탐색 μ•Œκ³ λ¦¬μ¦˜  (0) 2024.11.10
μ†ŒμŠ€ 결합도(Source Coupling)  (0) 2024.11.10
이진 트리 순회 방법 (예제)  (0) 2024.11.10