πŸ‘¨β€πŸ’» Seungineer's GitHub Contribution

πŸ› οΈ Tool/React

λͺ¨λ˜ 자슀둜 λ°°μš°λŠ” λ¦¬μ•‘νŠΈ μž…λ¬Έ2 - 1μž₯ 마무리

seungineer = seungwoo + engineer 2024. 5. 24. 01:12

1.5 λͺ¨λ“ˆ ν•Έλ“€λŸ¬, 트랜슀파일러

λ¦¬μ•‘νŠΈμ˜ 'create-react-app'을 μ‚¬μš©ν•˜λ©΄ λͺ¨λ“ˆ ν•Έλ“€λŸ¬, 트랜슀파일러 μ˜μ‹ν•˜μ§€ μ•Šκ³ λ„ κ°œλ°œν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ λ³΅μž‘ν•œ ν”„λ‘œμ νŠΈμΈ 경우 μ„€μ • νŒŒμΌμ„ μ‘°μž‘ν•  ν•„μš”κ°€ μžˆκΈ°μ— λ‚΄λΆ€ ꡬ쑰와 κ°œλ…μ„ μ•„λŠ” 것이 맀우 μ€‘μš”ν•˜λ‹€.

λͺ¨λ“ˆν•Έλ“€λŸ¬

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 기본적으둜 'μ„Έμ„Έν•˜κ²Œ λ‚˜λˆ„μ–΄' κ°œλ°œν•˜λŠ” 것이 νš¨μœ¨μ μ΄λ‹€. μ΄λ ‡κ²Œ κ°œλ°œν•  λ•Œ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ λ‘œλ”© νšŸμˆ˜κ°€ λŠ˜μ–΄λ‚˜ μ„±λŠ₯이 μ €ν•˜λ˜κΈ°λ„ ν•œλ‹€. κ·Έλž˜μ„œ κ°œλ°œν•  λ•ŒλŠ” νŒŒμΌμ„ λ‚˜λˆ„κ³ , ν”„λ‘œλ•μ…˜ 용으둜 λΉŒλ“œν•  λ•ŒλŠ” 파일 ν•˜λ‚˜μ— λͺ¨μœΌκΈ° μœ„ν•΄ js νŒŒμΌμ΄λ‚˜ css 파일 등을 ν•œλ° ν•©μ³μ£ΌλŠ” 'λͺ¨λ“ˆ ν•Έλ“€λŸ¬'κ°€ λ§Œλ“€μ–΄μ‘Œλ‹€(μ„Έμ„Έν•˜κ²Œ λ‚˜λ‰˜μ–΄ 개발된 것을 'λͺ¨λ“ˆ', 이 λͺ¨λ“ˆμ„ λ‹€λ€„μ£ΌλŠ” 게 'ν•Έλ“€λŸ¬'라고 생각).

트랜슀파일러

μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œκΈ°λ²•μ„ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” ν˜•νƒœλ‘œ λ³€ν™˜ν•˜λŠ” 역할을 ν•œλ‹€. 이λ₯Ό μ‚¬μš©ν•˜λ©΄ μƒˆλ‘œμš΄ ν‘œκΈ°λ²•μœΌλ‘œ μž‘μ„±λœ μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό κ΅¬λ²„μ „μ˜ ν‘œκΈ°λ²•(μ—¬λŸ¬ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ ν‘œκΈ°)으둜 λ³€ν™˜ν•  수 μžˆλ‹€. μœ μ˜ν•  점은 컴파일러 처럼 κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­λ˜λŠ” 것이 μ•„λ‹ˆλΌ κ΅¬λ²„μ „μ˜ ν‘œκΈ°λ²•μœΌλ‘œ ν‘œκΈ°κ°€ λ°”λ€λ‹€λŠ” 것이닀. 이외에도 λ¦¬μ•‘νŠΈλŠ” js νŒŒμΌμ— 'JSX ν‘œκΈ°λ²•'이라 λΆ€λ₯΄λŠ” νŠΉμˆ˜ν•œ κ·œμΉ™μ„ λ”°λ₯΄λŠ” μž‘μ„± λ°©λ²•μœΌλ‘œ μ½”λ“œλ₯Ό κΈ°μˆ ν•˜λŠ”λ°, 이런 μ½”λ“œ λ˜ν•œ λΈŒλΌμš°μ €κ°€ 인식 κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ μžλ™ λ³€ν™˜λœλ‹€. ν˜„μž¬λŠ” 'babel(바벨)'이라 λΆˆλ¦¬λŠ” νŠΈλžœμŠ€νŒŒμΌλŸ¬κ°€ μ£Όλ₯˜μ΄λ‹€. * 바벨 μ‚¬μš©λ²•(λΈ”λ‘œκ·Έ)

개발 κ²½ν—˜μ„ ν•œμΈ΅ 높인 'λΉ„νŠΈvite'

'μ›ΉνŒ©'을 μ‚¬μš©ν•΄ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ„ ν•  λ•Œ, μ½”λ“œμ— 무언가 변경이 λ°œμƒν•˜λ©΄ μ„œλ²„λ₯Ό λ‹€μ‹œ κΈ°λ™ν•˜μ§€ μ•Šμ•„λ„ λ‹€μ‹œ λ²ˆλ“€μ΄ μ‹€ν–‰λ˜κ³  μ—…λ°μ΄νŠΈ λ‚΄μš©μ΄ λΈŒλΌμš°μ €μ— λ°˜μ˜λœλ‹€. μ΄λŠ” 개발 κ²½ν—˜μ„ λ†’μ΄μ§€λ§Œ, ν”„λ‘œμ νŠΈ 규λͺ¨κ°€ 컀짐에 따라 λ²ˆλ“€λ‘œ λ¬ΆλŠ” μ‹œκ°„μ΄ λŠ˜μ–΄λ‚˜λŠ” λ¬Έμ œκ°€ λ°œμƒ κ°€λŠ₯ν•˜λ‹€.

λ°˜λ©΄μ— 'λΉ„νŠΈ'λŠ” 개발 ν™˜κ²½μ— 따라 μ†ŒμŠ€ μ½”λ“œλ₯Ό λ²ˆλ“€ν•˜μ§€ μ•Šκ³  λΉ λ₯΄κ²Œ μ‹€ν–‰ν•΄μ€€λ‹€. 개발 μ„œλ²„λ₯Ό κΈ°λ™ν•˜λŠ” 속도도 맀우 λΉ λ₯΄λ‹€. * λΉ„νŠΈ μ‚¬μš©λ²•(μ˜μƒ)

1.6 SPA와 κΈ°μ‘΄ μ›Ή μ‹œμŠ€ν…œμ˜ 차이

κΈ°μ‘΄ μ›Ή μ‹œμŠ€ν…œ

  1. μ‚¬μš©μžκ°€ '이 νŽ˜μ΄μ§€λ₯Ό λ³΄μ—¬μ£Όμ„Έμš”'라고 TOP νŽ˜μ΄μ§€μ— μ ‘κ·Όν•˜λ©΄ -> μ„œλ²„ 츑은 μš”μ²­μ„ λ°›μ•„μ„œ μΌμΉ˜ν•˜λŠ” νŽ˜μ΄μ§€μ˜ HTML νŒŒμΌμ„ λ°˜ν™˜ν•¨
  2. 이후 HTML의 링크λ₯Ό ν΄λ¦­ν•΄μ„œ μ–΄λ–€ νŽ˜μ΄μ§€(예: λ§ˆμ΄νŽ˜μ΄μ§€)λ₯Ό μ—΄λžŒν•  λ•ŒλŠ” 1번과 같이 μ„œλ²„ 츑에 '이 νŽ˜μ΄μ§€λ₯Ό λ³΄μ—¬μ£Όμ„Έμš”'라고 μš”μ²­μ„ μ „μ†‘ν•˜κ³ , μ„œλ²„ μΈ‘μ—μ„œλŠ” μš”μ²­κ³Ό μΌμΉ˜ν•˜λŠ” HTML νŒŒμΌμ„ λ°˜ν™˜ν•¨

πŸ’‘ κΈ°μ‘΄ μ›Ή μ‹œμŠ€ν…œμ—μ„œλŠ” νŽ˜μ΄μ§€λ₯Ό 이동할 λ•Œλ§ˆλ‹€ μ„œλ²„μ— μš”μ²­μ„ μ „μ†‘ν•˜κ³  μ„œλ²„ μΈ‘μ—μ„œ HTML νŒŒμΌμ„ λ°˜ν™˜ν•˜κΈ° λ•Œλ¬Έμ— νŽ˜μ΄μ§€ μ΄λ™μ‹œ 화면이 잠깐 ν•˜μ–—κ²Œ λ³΄μ΄λŠ” 것이 νŠΉμ§•μ΄λ‹€.

SPA(Single Page Allocation)

  1. κΈ°μ‘΄ μ›Ή μ‹œμŠ€ν…œ 처럼 'μ΄νŽ˜μ΄μ§€λ₯Ό λ³΄μ—¬μ£Όμ„Έμš”'라고 TOP νŽ˜μ΄μ§€μ— μ ‘κ·Όν•˜λ©΄ μ„œλ²„ 츑이 μš”μ²­μ„ λ°›μ•„ μΌμΉ˜ν•˜λŠ” νŽ˜μ΄μ§€μ˜ HTML νŒŒμΌμ„ λ°˜ν™˜ν•¨
  2. 이후 HTML의 링크λ₯Ό ν΄λ¦­ν•΄μ„œ μ–΄λ–€ νŽ˜μ΄μ§€(예: λ§ˆμ΄νŽ˜μ΄μ§€)λ₯Ό μ—΄λž—λ§ λ•Œ, ν•„μš”ν•œ 데이터가 μžˆμ„ 경우 'ν•„μš”ν•œ 데이터λ₯Ό μ£Όμ„Έμš”'λΌλŠ” μš”μ²­μ„ μ„œλ²„μ— 전솑함
  3. HTML 전체λ₯Ό λ³€κ²½ν•˜λŠ” 게 μ•„λ‹Œ index.html νŒŒμΌμ„ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ DOM을 λ°”κΎΈλŠ” λ°©μ‹μœΌλ‘œ μ—…λ°μ΄νŠΈ 함

πŸ’‘ HTML 파일 μš”μ²­κ³Ό 달리 비동기적 싀행을 톡해 데이터λ₯Ό 얻을 수 μžˆλ‹€. 화면이 잠깐 ν•˜μ–—κ²Œ λ³€ν•˜μ§€ μ•Šμ•„ μΎŒμ ν•˜λ‹€λŠ” μž₯점이 μžˆλ‹€. 'SPA'μ—μ„œλŠ” HTML 파일이 ν•˜λ‚˜μ΄λ©° μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•΄ DOM을 λ°”κΏ” μ¨μ„œ ν™”λ©΄ 이동을 κ΅¬ν˜„ν•˜λŠ” 게 κΈ°λ³Έ!

 


μ•„λž˜ μ„œμ μœΌλ‘œ ν•™μŠ΅ν•˜λ©° μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ λ°°μš°λŠ” λ¦¬μ•‘νŠΈ μž…λ¬Έ