πŸ‘©πŸ»‍πŸ’» Dev/Front-End

λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬: ν”„λ‘ νŠΈμ—”λ“œ κ΄€μ μ—μ„œμ˜ 차이

yesolz 2024. 9. 1. 09:42
728x90

ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ—μ„œ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬λŠ” μ„œλ‘œ λ‹€λ₯Έ 역할을 μˆ˜ν–‰ν•˜λ©°, κ°œλ°œμžμ—κ²Œ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯κ³Ό μ‚¬μš© λ°©μ‹μ—μ„œλ„ 차이가 μžˆλ‹€.

 

1. λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬μ˜ κΈ°λ³Έ κ°œλ…

  • 라이브러리(Library)
    • λΌμ΄λΈŒλŸ¬λ¦¬λŠ” νŠΉμ • κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” λ„κ΅¬λ“€μ˜ 집합. κ°œλ°œμžλŠ” ν•„μš”ν•  λ•Œ 라이브러리λ₯Ό ν˜ΈμΆœν•˜μ—¬ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€.
    • λΌμ΄λΈŒλŸ¬λ¦¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 흐름을 직접 μ œμ–΄ν•˜μ§€ μ•ŠλŠ”λ‹€. λŒ€μ‹ , κ°œλ°œμžκ°€ ν•„μš”ν•œ κΈ°λŠ₯을 μ„ νƒμ μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.
  • ν”„λ ˆμž„μ›Œν¬(Framework)
    • ν”„λ ˆμž„μ›Œν¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λ³Έ ꡬ쑰λ₯Ό μ œκ³΅ν•˜κ³ , κ·Έ μ•ˆμ—μ„œ 개발이 이루어지도둝 ν•œλ‹€. ν”„λ ˆμž„μ›Œν¬λŠ” μ½”λ“œμ˜ 흐름을 μ œμ–΄ν•˜λ©°, κ°œλ°œμžλŠ” ν”„λ ˆμž„μ›Œν¬κ°€ μ œμ‹œν•˜λŠ” 방식에 λ§žμΆ”μ–΄ μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ•Ό ν•œλ‹€.
    • ν”„λ ˆμž„μ›Œν¬λŠ” “μ œμ–΄μ˜ μ—­μ „(Inversion of Control, IoC)”을 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 흐름을 κ΄€λ¦¬ν•œλ‹€. κ°œλ°œμžλŠ” ν”„λ ˆμž„μ›Œν¬κ°€ μ œκ³΅ν•˜λŠ” ꡬ쑰 μ•ˆμ—μ„œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³ , ν”„λ ˆμž„μ›Œν¬κ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ „λ°˜μ μΈ 흐름을 μ œμ–΄ν•œλ‹€.

React 곡식 ν™ˆνŽ˜μ΄μ§€. "library"라고 μΉ­ν•˜κ³  μžˆλ‹€.

 

2. ν”„λ‘ νŠΈμ—”λ“œμ—μ„œμ˜ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬

  • React (라이브러리)
    • ReactλŠ” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€(UI)λ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•œ JavaScript λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€. ReactλŠ” 주둜 μ»΄ν¬λ„ŒνŠΈ 기반 μ•„ν‚€ν…μ²˜λ₯Ό 톡해 UIλ₯Ό κ°œλ°œν•  수 있게 ν•΄μ€€λ‹€.
    • ReactλŠ” UIλ₯Ό κ΅¬μ„±ν•˜λŠ” 방법을 μ œκ³΅ν•˜μ§€λ§Œ, 전체 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κ΅¬μ‘°λ‚˜ 흐름을 κ°•μ œν•˜μ§€ μ•ŠλŠ”λ‹€. κ°œλ°œμžλŠ” λΌμš°νŒ…, μƒνƒœ 관리, 데이터 처리 λ“±μ˜ κΈ°λŠ₯을 ν•„μš”μ— 따라 λ‹€λ₯Έ λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν•¨κ»˜ μ‘°ν•©ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.
  • Next.js (ν”„λ ˆμž„μ›Œν¬)
    • Next.jsλŠ” Reactλ₯Ό 기반으둜 ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬λ‘œ, μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)κ³Ό 정적 μ‚¬μ΄νŠΈ 생성(SSG) 같은 κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ React μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 더 μ‰½κ²Œ ꡬ좕할 수 μžˆλ„λ‘ λ•λŠ”λ‹€.
  • Vue.js (ν”„λ ˆμž„μ›Œν¬)
    • Vue.jsλŠ” React와 μœ μ‚¬ν•˜κ²Œ μ»΄ν¬λ„ŒνŠΈ 기반의 UI κ°œλ°œμ„ μ§€μ›ν•˜μ§€λ§Œ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ꡬ쑰와 흐름을 더 κ°•λ ₯ν•˜κ²Œ μ œμ–΄ν•˜λŠ” ν”„λ ˆμž„μ›Œν¬μ΄λ‹€. Vue.jsλŠ” μƒνƒœ 관리, λΌμš°νŒ… 등을 λ‚΄μž₯ν•˜κ³  μžˆμ–΄ κ°œλ°œμžκ°€ 전체 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μ‘°ν™”ν•˜λŠ” 데 더 λ§Žμ€ κ°€μ΄λ“œλ₯Ό μ œκ³΅ν•œλ‹€.

 

3. μ™œ ReactλŠ” 라이브러리이고, Next.jsλŠ” ν”„λ ˆμž„μ›Œν¬μΌκΉŒ?

Reactκ°€ 라이브러리이고 Next.jsκ°€ ν”„λ ˆμž„μ›Œν¬μΈ 것을 λ³΄μ—¬μ£ΌλŠ” ꡬ체적인 μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄μž.

 

1. λΌμš°νŒ…

  • Reactμ—μ„œλŠ” λΌμš°νŒ…μ„ 기본적으둜 μ œκ³΅ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, react-router와 같은 λ³„λ„μ˜ 라이브러리λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. λΌμš°νŒ…μ„ μ„€μ •ν•˜λŠ” 방법도 μ „μ μœΌλ‘œ 개발자의 선택에 달렀 μžˆλ‹€. μ–΄λ–€ 경둜둜 μ–΄λ–€ μ»΄ν¬λ„ŒνŠΈλ₯Ό λ Œλ”λ§ν• μ§€, 라우트 κ°„ μ „ν™˜μ„ μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€λŠ” λͺ¨λ‘ κ°œλ°œμžκ°€ κ²°μ •ν•œλ‹€.
  • Next.jsμ—μ„œλŠ” 파일 기반 λΌμš°νŒ… μ‹œμŠ€ν…œμ„ μ œκ³΅ν•œλ‹€. pages 디렉토리에 νŒŒμΌμ„ μƒμ„±ν•˜λ©΄ κ·Έ 파일 이름이 μžλ™μœΌλ‘œ URL κ²½λ‘œκ°€ λœλ‹€. 예λ₯Ό λ“€μ–΄, about.js νŒŒμΌμ„ pages 폴더에 μΆ”κ°€ν•˜λ©΄ /about 경둜둜 μžλ™ λ§€ν•‘λœλ‹€. κ°œλ°œμžκ°€ λ³„λ„μ˜ μ„€μ • 없이 λΌμš°νŒ…μ΄ μžλ™μœΌλ‘œ 처리되며, μ΄λŠ” Next.jsκ°€ ν”„λ ˆμž„μ›Œν¬λ‘œμ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ꡬ쑰λ₯Ό κ°•μ œν•˜λŠ” μ˜ˆμ΄λ‹€.

 

2. 데이터 페칭

  • Reactμ—μ„œλŠ” 데이터 νŽ˜μΉ­μ„ μœ„ν•΄ fetch, Axios λ“±κ³Ό 같은 라이브러리λ₯Ό μ‚¬μš©ν•˜λ©°, 데이터 페칭 λ‘œμ§μ„ 어디에 λ°°μΉ˜ν• μ§€λŠ” μ „μ μœΌλ‘œ κ°œλ°œμžμ—κ²Œ 달렀 μžˆλ‹€. μ»΄ν¬λ„ŒνŠΈκ°€ 처음 λ Œλ”λ§λ  λ•Œ 데이터λ₯Ό κ°€μ Έμ˜¬ μˆ˜λ„ 있고, νŠΉμ • μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œ 데이터λ₯Ό κ°€μ Έμ˜¬ μˆ˜λ„ μžˆλ‹€.
  • Next.jsλŠ” 데이터 νŽ˜μΉ­μ— λŒ€ν•œ κ΅¬μ‘°ν™”λœ 방법을 μ œκ³΅ν•œλ‹€. getStaticProps, getServerSideProps, getStaticPaths와 같은 ν•¨μˆ˜λ“€μ„ μ‚¬μš©ν•΄ 정적 μ‚¬μ΄νŠΈ 생성(SSG)κ³Ό μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)을 μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€. Next.jsλŠ” μ΄λŸ¬ν•œ λ©”μ„œλ“œλ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 데이터 페칭 νŒ¨ν„΄μ„ μ •ν˜•ν™”ν•˜κ³ , SSR 및 SSG와 같은 κΈ°λŠ₯을 λ‚΄μž₯ν•˜μ—¬ μ œκ³΅ν•œλ‹€.

 

3. SEO

  • React λ‹¨λ…μœΌλ‘œλŠ” SEO(검색 엔진 μ΅œμ ν™”)λ₯Ό κ΅¬ν˜„ν•˜κΈ°κ°€ κΉŒλ‹€λ‘­λ‹€. 기본적으둜 ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§(CSR)을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, 초기 HTML은 빈 νƒœκ·Έλ‘œ 제곡되고, 이후에 JavaScriptκ°€ μ‹€ν–‰λ˜λ©΄μ„œ μ½˜ν…μΈ κ°€ μ±„μ›Œμ§„λ‹€. 이λ₯Ό κ°œμ„ ν•˜λ €λ©΄ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)을 직접 μ„€μ •ν•˜κ±°λ‚˜, Next.js와 같은 ν”„λ ˆμž„μ›Œν¬λ₯Ό λ„μž…ν•΄μ•Ό ν•œλ‹€.
  • Next.jsλŠ” μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)κ³Ό 정적 μ‚¬μ΄νŠΈ 생성(SSG)을 기본적으둜 μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ—, SEO μ΅œμ ν™”κ°€ μš©μ΄ν•˜λ‹€. νŽ˜μ΄μ§€κ°€ λ‘œλ“œλ  λ•Œ μ„œλ²„μ—μ„œ μ™„μ „ν•œ HTML이 μƒμ„±λ˜μ–΄ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ „λ‹¬λ˜κΈ° λ•Œλ¬Έμ—, 검색 엔진이 νŽ˜μ΄μ§€μ˜ μ½˜ν…μΈ λ₯Ό μ‰½κ²Œ 인덱싱할 수 μžˆλ‹€. 이처럼 Next.jsλŠ” SEO에 ν•„μš”ν•œ κΈ°λŠ₯을 기본적으둜 μ œκ³΅ν•˜μ—¬, κ°œλ°œμžκ°€ λ”°λ‘œ μ„€μ •ν•˜μ§€ μ•Šμ•„λ„ 되게 ν•œλ‹€.

 

4. 폴더 ꡬ쑰와 파일 관리

  • Reactμ—μ„œλŠ” 폴더 ꡬ쑰와 파일 관리에 λŒ€ν•΄ νŠΉλ³„ν•œ κ·œμΉ™μ΄ μ—†λ‹€. κ°œλ°œμžλŠ” ν”„λ‘œμ νŠΈμ˜ ꡬ쑰λ₯Ό 자유둭게 섀계할 수 있으며, μ»΄ν¬λ„ŒνŠΈ, μŠ€νƒ€μΌ, ν…ŒμŠ€νŠΈ 파일 등을 μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ°°μΉ˜ν•  수 μžˆλ‹€. 이둜 인해 ν”„λ‘œμ νŠΈλ§ˆλ‹€ 파일 ꡬ쑰가 λ‹¬λΌμ§ˆ 수 μžˆλ‹€.
  • Next.jsλŠ” ν”„λ‘œμ νŠΈμ˜ 기본적인 ꡬ쑰λ₯Ό μ •μ˜ν•˜κ³  있으며, pages, public, styles λ“±μ˜ 폴더가 μ •ν•΄μ Έ μžˆλ‹€. 예λ₯Ό λ“€μ–΄, pages ν΄λ”λŠ” μžλ™μœΌλ‘œ λΌμš°νŒ…κ³Ό μ—°κ²°λ˜κ³ , public ν΄λ”λŠ” 정적 νŒŒμΌμ„ κ΄€λ¦¬ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©λœλ‹€. 이처럼 Next.jsλŠ” κ°œλ°œμžκ°€ λ”°λ‘œ κ³ λ―Όν•˜μ§€ μ•Šμ•„λ„ 기본적인 폴더 ꡬ쑰λ₯Ό μ œκ³΅ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 일관성을 μœ μ§€ν•  수 있게 ν•œλ‹€.

 

μœ„ μ˜ˆμ‹œλ“€μ€ Reactκ°€ λΌμ΄λΈŒλŸ¬λ¦¬λ‘œμ„œ μœ μ—°μ„±μ„ κ°•μ‘°ν•˜κ³ , Next.jsκ°€ ν”„λ ˆμž„μ›Œν¬λ‘œμ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ꡬ쑰와 κΈ°λŠ₯을 μ²΄κ³„ν™”ν•˜μ—¬ κ°œλ°œμ„ λ•λŠ”λ‹€λŠ” 것을 잘 보여쀀닀.

μ „λ°˜μ μœΌλ‘œ ReactλŠ” νŠΉμ • κΈ°λŠ₯을 ν•„μš”ν•  λ•Œλ§ˆλ‹€ ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 반면, Next.jsλŠ” κ°œλ°œμžκ°€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 λ•Œ 따라야 ν•  μΌμ •ν•œ 틀을 μ œκ³΅ν•œλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€!

 

728x90