μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ μΉ κ°λ°μ μ§ν
μΉ κ°λ°μ λΉ λ₯΄κ² λ°μ νλ©°, μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ λꡬλ€μ΄ λ±μ₯ν΄ κ°λ°μλ€μ΄ 볡μ‘ν μ ν리μΌμ΄μ μ λ μ½κ² κ΄λ¦¬ν μ μλλ‘ λμμ£Όκ³ μλ€. μ΄λ² κΈμμλ μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ λμ μ리λΆν° CSS κ°λ°, κ·Έλ¦¬κ³ λ€μν λ λλ§ λ°©μμ μ΄λ₯΄κΈ°κΉμ§ νλ μΉ κ°λ°μ μ£Όμ κ°λ λ€μ μ 리ν΄λ³΄κ² λ€.
μλ°μ€ν¬λ¦½νΈ νλ μμν¬ λμ μ리
λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬λ μλ°μ€ν¬λ¦½νΈ κ°λ°μ ν΅μ¬ μμλ‘, κ°κΈ° λ€λ₯Έ λͺ©μ μ κ°μ§κ³ μλ€.
- λΌμ΄λΈλ¬λ¦¬λ νΉμ κΈ°λ₯μ μννκΈ° μν΄ λ¨μΌ νμΌλ‘ μ 곡λλ μ½λ μ§ν©μ΄λ€. μλ₯Ό λ€μ΄, jQueryλ DOM μ‘°μμ νΉνλ λΌμ΄λΈλ¬λ¦¬λ€.
- νλ μμν¬λ μ¬λ¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¬ν¨ν μ’ ν©μ μΈ κ°λ° νκ²½μ μ 곡νλ©°, λ€μν λͺ©μ μ μν΄ μ¬μ©λλ€. λνμ μΌλ‘ React, Angular, Vue.js κ°μ νλ μμν¬κ° μλ€.
λ²λ€λ§κ³Ό μ½λ μ€ν리ν
- λ²λ€λ§μ μ¬λ¬ κ°μ μλ°μ€ν¬λ¦½νΈ νμΌμ νλλ‘ μμΆνλ κ³Όμ μΌλ‘, λ€νΈμν¬ ν¨μ¨μ±μ λμ΄κΈ° μν΄ μ¬μ©λλ€. κ·Έλ¬λ λ²λ€ νμΌμ΄ 컀μ§λ©΄ μ΄κΈ° λ‘λ© μλκ° λλ €μ§ μ μλ€.
- μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ μ½λ μ€ν리ν
μ΄ μ¬μ©λλ€. μ½λ μ€ν리ν
μ λ²λ€λ§λ νμΌμ λ€μ μͺΌκ° νμν λΆλΆλ§ λ‘λνλ κΈ°λ²μ΄λ€. μ΄λ₯Ό ν΅ν΄ λ€νΈμν¬ ν¨μ¨μ±μ λμ΄κ³ , νμ΄μ§ λ‘λ© μλλ₯Ό κ°μ ν μ μλ€.
- Dynamic Loadingμ μ½λ μ€ν리ν μ λνμ μΈ λ°©λ²μΌλ‘, μ¬μ©μκ° λ³΄κ³ μ νλ νμ΄μ§μ νμν λΆλΆλ§ λμ μΌλ‘ λ‘λνλ€. μλ₯Ό λ€μ΄, νΉμ νμ΄μ§μμλ§ νμν λΌμ΄λΈλ¬λ¦¬λ μ»΄ν¬λνΈλ§ λ‘λνμ¬ μ±λ₯μ μ΅μ νν μ μλ€.
λ²λ€λ¬ λμ μ리μ μ£Όμ λꡬλ€
- Webpack: κ°μ₯ λ리 μ¬μ©λλ λ²λ€λ¬λ‘, μΈλΆ μ€μ μ ν΅ν΄ μ½λ μ€ν리ν μ μ§μνλ€. 볡μ‘ν μ ν리μΌμ΄μ μ μ±λ₯μ μ΅μ νν μ μλ λ€μν μ€μ μ μ 곡νλ€.
- Vite: Webpackμ λμμΌλ‘, esbuildλ₯Ό νμ₯νμ¬ λ§λ λ²λ€λ¬μ΄λ€. κ° νμ΄μ§λ³λ‘ νμν JSX λ° λΌμ΄λΈλ¬λ¦¬ λͺ¨λλ€λ§ λ²λ€λ§νλ λ°©μμΌλ‘ μ±λ₯μ λμΈλ€.
νΈλμ€νμΌλ¬μ μ»΄νμΌλ¬: μλ°μ€ν¬λ¦½νΈ νΈνμ± λ¬Έμ ν΄κ²°
νΈλμ€νμΌλ¬μ μ»΄νμΌλ¬λ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό λ³ννλ λꡬλ‘, κ³ λ²μ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ λ²μ μΌλ‘ λ³νν΄ λ€μν μΉ λΈλΌμ°μ μμ νΈνμ±μ μ μ§νλλ‘ λλλ€.
- μ»΄νμΌλ¬λ κ³ μμ€ μΈμ΄λ₯Ό μ μμ€ μΈμ΄λ‘ λ³ννλ κ³Όμ μμ μ¬μ©λλ€. μλ₯Ό λ€μ΄, TypeScript μ½λλ₯Ό μλ°μ€ν¬λ¦½νΈλ‘ λ³ννλ κ³Όμ μ΄ μ΄μ ν΄λΉνλ€.
- νΈλμ€νμΌλ¬λ κ°μ μ±μ§μ μΈμ΄λ₯Ό λ€λ₯Έ λ²μ μΌλ‘ λ³ννλ λꡬλ‘, μ΅μ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ λ²μ μΌλ‘ λ³ννμ¬ λ€μν λΈλΌμ°μ μμ νΈνλλλ‘ νλ€. Babelμ λνμ μΈ νΈλμ€νμΌλ¬λ‘, μ΅μ ES6+ λ¬Έλ²μ ES5 μ΄νλ‘ λ³νν΄μ€λ€.
- Polyfillμ Babelμ΄ λ³νν μ μλ 볡μ‘ν κΈ°λ₯μ 보μνλ μν μ νλ€. Polyfillμ ν΅ν΄ μ΅μ κΈ°λ₯μ μ§μνμ§ μλ λΈλΌμ°μ μμλ μ½λλ₯Ό μ€νν μ μλ€.
μ μ νμ μ ν΅ν μλ°μ€ν¬λ¦½νΈμ μμ μ± λ³΄μ₯: TypeScript
JavaScriptλ λμ νμ μΈμ΄λ‘, λ³μμ νμ μ΄ μ€ν μ€μ κ²°μ λλ€. μ΄λ μ μ°μ±μ μ 곡νμ§λ§, μ½λμ μ μ§λ³΄μμ μ€λ₯ κ²μΆμ μ΄λ €μμ μ΄λν μ μλ€. TypeScriptλ μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ±μ₯ν μ μ νμ μΈμ΄λ€.
- TypeScriptλ μ½λ μμ± μμ μ λ³μμ νμ
μ λͺ
μνμ¬, λ°νμ μ€λ₯λ₯Ό μ€μ΄κ³ μ μ§λ³΄μμ±μ λμΈλ€. TypeScriptλ‘ μμ±λ μ½λλ νΈλμ€νμΌλ¬λ₯Ό ν΅ν΄ μλ°μ€ν¬λ¦½νΈλ‘ λ³νλλ©°, Babelκ³Ό κ²°ν©ν΄ λ€μν λ²μ μ μλ°μ€ν¬λ¦½νΈλ‘ λ³νλ μ μλ€.
- Swaggerμμ λΉκ΅: Spring νλ μμν¬μμμ Swaggerκ° API λ¬Έμνλ₯Ό λ΄λΉνλ κ²μ²λΌ, TypeScriptλ μ½λμ λͺ νμ±κ³Ό μμ μ±μ λμ΄λ μν μ νλ€.
CSS κ°λ°μ μ½κ² λμμ£Όλ Preprocessor λ° Frameworkλ€
CSSλ μΉ νμ΄μ§μ μ€νμΌμ μ μνλ μΈμ΄λ‘, 볡μ‘ν λμμΈ μμ μ λ¨μννκΈ° μν΄ λ€μν λꡬλ€μ΄ λ±μ₯νλ€.
- CSS Preprocessor:
- SASS, SCSS: CSSμ νμ₯ λ¬Έλ²μ μ 곡νμ¬, μ½λμ μ¬μ¬μ©μ±κ³Ό μ μ§λ³΄μλ₯Ό μ½κ² νλ€. SASSλ CSSλ₯Ό λ μ μ°νκ² μ¬μ©ν μ μλλ‘ λλ μ μ²λ¦¬κΈ°(Preprocessor)λ‘, μμ±λ μ½λλ νΈλμ€νμΌλ§μ ν΅ν΄ μΌλ° CSSλ‘ λ³νλλ€.
- CSS Framework:
- Tailwind CSS: μ νΈλ¦¬ν° ν΄λμ€ κΈ°λ°μ νλ μμν¬λ‘, 미리 μ μλ ν΄λμ€ μ‘°ν©μ ν΅ν΄ μμ½κ² μ€νμΌμ μ μ©ν μ μλ€. λμμΈ μ€νμΌμ μΌκ΄λκ² μ μ§ν μ μλ μ₯μ μ΄ μλ€.
- UI Framework:
- Material UI, Chakra UI: λμμΈ μμ€ν κ³Ό UI μ»΄ν¬λνΈλ₯Ό μ 곡νμ¬, λΉ λ₯΄κ³ μΌκ΄λ UIλ₯Ό ꡬμΆν μ μλ€. μ¬λ¬ UI νλ μμν¬λ₯Ό νΌν©ν΄μ μ¬μ©νλ©΄ μΆ©λ κ°λ₯μ±μ΄ μμΌλ―λ‘, νλμ νλ μμν¬λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€.
μΉ νλ‘ νΈμλ κ°λ°μμ CSS νμ© λ°©λ²
CSSλ₯Ό νμ©νλ λ°©λ²μ ν¬κ² μΈ κ°μ§λ‘ λλλ€:
- μμμ λ°©λ²: μΈλΆ CSS νμΌμ HTMLμ μ§μ μ°κ²°νμ¬, ν΄λμ€λ₯Ό ν΅ν΄ μ€νμΌμ μ μ©νλ μ ν΅μ μΈ λ°©μμ΄λ€.
- CSS-IN-JS: JavaScript μ½λ λ΄μμ CSSλ₯Ό μμ±νλ λ°©μμΌλ‘, μ‘°κ±΄λΆ μ€νμΌλ§μ΄λ λμ μ€νμΌλ§μ μ 리νλ€. Reactμ styled-componentsκ° λνμ μΈ μμ΄λ€.
- Inline μ€νμΌ: HTML μμμ μ§μ style μμ±μ ν΅ν΄ CSSλ₯Ό μ μ©νλ λ°©λ²μ΄λ€. κ·Έλ¬λ μ΄ λ°©μμ 리λ λλ§ μ±λ₯ λ¬Έμ λ₯Ό μΌμΌν¬ μ μμ΄, ν° νλ‘μ νΈμμλ μ¬μ©μ νΌνλ κ²μ΄ μ’λ€.
νμ¬ λ§μ΄ μ¬μ©λλ λ°©μμ μ νΈλ¦¬ν° ν΄λμ€λ₯Ό ν΅ν΄ CSSλ₯Ό μ μ©νλ κ²μΌλ‘, CSS νλ μμν¬μ κ²°ν©ν΄ ν¨μ¨μ μΈ μ€νμΌλ§μ ꡬννλ€.
리λ λλ§(ReRendering)κ³Ό 리ν¨μΈν (RePainting)
λ λλ§μ λΈλΌμ°μ κ° HTML, CSS, μλ°μ€ν¬λ¦½νΈλ₯Ό μ²λ¦¬νμ¬ μ¬μ©μμκ² μκ°μ μΈ κ²°κ³Όλ¬Όμ 보μ¬μ£Όλ κ³Όμ μ΄λ€. μ΄ κ³Όμ μμ νΉμ μμκ° λ³κ²½λλ©΄ 리λ λλ§κ³Ό 리ν¨μΈν μ΄ λ°μνλ€.
- 리λ λλ§: DOM κ΅¬μ‘°κ° λ³κ²½λ λ, λΈλΌμ°μ κ° λ€μ λ λλ§νλ κ³Όμ μ΄λ€.
- 리ν¨μΈν : μ€νμΌμ΄λ λ μ΄μμμ΄ λ³κ²½λμ΄ λΈλΌμ°μ κ° νλ©΄μ λ€μ 그리λ κ³Όμ μ΄λ€.
Static Websites, MPA, κ·Έλ¦¬κ³ SPA
μΉ μ ν리μΌμ΄μ μ ꡬ쑰λ ν¬κ² Static Websites, MPA(Multi-Page Application), **SPA(Single-Page Application)**μΌλ‘ ꡬλΆλλ€.
- Static Websites:
- μλ²μμ 미리 μμ±λ νμ΄μ§λ₯Ό λ°ννλ λ°©μμΌλ‘, λΉ λ₯Έ λ‘λ© μλμ SEO(κ²μ μμ§ μ΅μ ν)μ μ 리νλ€. μλ² μμ΄λ S3μ κ°μ μ€ν 리μ§μ νΈμ€ν ν μ μλ€.
- MPA(Multi-Page Application):
- μλ²μμ λμ μΌλ‘ νμ΄μ§λ₯Ό μμ±νμ¬ λ°ννλ λ°©μμΌλ‘, μ€μκ° λ°μ΄ν° μ²λ¦¬κ° νμν μΉμ¬μ΄νΈμ μ ν©νλ€. λ°λ³΅λλ ν νλ¦Ώκ³Ό λ°μ΄ν°λ₯Ό λΆλ¦¬νμ¬, νμν μ 보λ₯Ό μ€μκ°μΌλ‘ μ‘°ν©ν΄ νμ΄μ§λ₯Ό μμ±νλ€.
- μΉ μλ² μμμ μ¬μ©νκΈ° λλ¬Έμ ν΄λΌμ°λ λΉμ©μ΄ λ°μν μ μμΌλ©°, μ΄λ₯Ό μ κ°νκΈ° μν΄ Serverless μν€ν μ²κ° λμ λκΈ°λ νλ€.
- SPA(Single-Page Application):
- λ¨μΌ νμ΄μ§μμ λͺ¨λ μΈν°λμ μ΄ μ΄λ£¨μ΄μ§λ λ°©μμΌλ‘, λΉ λ₯Έ νλ©΄ μ νκ³Ό μ μ¬ν μ¬μ©μ κ²½νμ μ 곡νλ€. μ΄κΈ° λ‘λ© μ λͺ¨λ μλ°μ€ν¬λ¦½νΈ νμΌμ λ€μ΄λ‘λνκΈ° λλ¬Έμ, 첫 λ‘λ© μλκ° λ릴 μ μλ€.
SSR(Server-Side Rendering) With Hydration: MPAμ SPAμ κ²°ν©
SSR(Server-Side Rendering) with Hydrationμ MPAμ SPAμ μ₯μ μ κ²°ν©ν λ°©μμ΄λ€.
- SSR: μλ²μμ 미리 λ λλ§λ HTMLμ μ λ¬νμ¬ μ΄κΈ° λ‘λ© μλλ₯Ό λμΈλ€.
- CSR: ν΄λΌμ΄μΈνΈ μΈ‘μμ μλ°μ€ν¬λ¦½νΈλ₯Ό λ‘λν΄, μ¬μ©μμμ μΈν°λμ μ μ²λ¦¬νλ€.
Next.jsλ μ΄λ¬ν SSRκ³Ό CSR λ°©μμ ν¨μ¨μ μΌλ‘ μ§μνλ νλ μμν¬λ‘, μ»΄ν¬λνΈ λ¨μλ‘ SSRκ³Ό CSRμ λλμ΄ μ¬μ©ν μ μλ€. μ΄ λ°©μμ μ¬μ©μ κ²½νκ³Ό μ±λ₯μ λͺ¨λ ν₯μμν€λ λ° ν¨κ³Όμ μ΄λ€.
λ§μΉλ©°..
μ΄λ² κΈμμλ μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ λ€μν μΉ κ°λ° κ°λ λ€μ μ 리νλ€. λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬μ λμ μ리, CSS κ°λ° λꡬ, κ·Έλ¦¬κ³ MPAμ SPAμ μ₯μ μ κ²°ν©ν SSR with HydrationκΉμ§, μ΄λ¬ν κ°λ λ€μ μ΄ν΄νλ©΄ λμ± ν¨μ¨μ μ΄κ³ μ±λ₯ μ’μ μΉ μ ν리μΌμ΄μ μ ꡬμΆν μ μμ κ²μ΄λ€.
βΉοΈμ°Έκ³
[ASAC 6κΈ° κ°μμλ£]
'π»DEV-STUDY > HTTP' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ‘λλ°Έλ°μ± κ°λ λ° λ°°ν¬ λ°©μ (0) | 2024.08.19 |
---|---|
λ°±μλ μΉ κ°λ°: API = ν΄λΌμ΄μΈνΈκ° νμνλ λ°μ΄ν° λ°ν (0) | 2024.08.19 |
νλ‘ νΈμλ μΉ κ°λ° (0) | 2024.08.19 |
μΉ μλ²(WS)μ μΉ μ΄ν리μΌμ΄μ μλ²(WAS) (0) | 2024.08.18 |
μΉ κ²μ μμ§(ꡬκΈκ³Ό SEO) λ° μΉ μ±λ₯ μ§ν (0) | 2024.08.18 |