νλ‘ νΈμλ κ°λ°μμ μ»΄ν¬λνΈ μν€ν μ²μ ν΅μ¬ μμΉμ νꡬν©λλ€. νμ₯ κ°λ₯νκ³ μ μ§λ³΄μ λ° ν μ€νΈκ° μ©μ΄ν μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆνλ λ°©λ²μ λ°°μ°μΈμ.
νλ‘ νΈμλ μμΉ λμμΈ: μ»΄ν¬λνΈ μν€ν μ² λ§μ€ν°νκΈ°
λμμμ΄ λ°μ νλ μΉ κ°λ° νκ²½μμ νλ‘ νΈμλ μν€ν μ²λ νλ‘μ νΈμ μ±κ³΅κ³Ό μλͺ μ κ²°μ νλ λ° μ€μν μν μ ν©λλ€. λ€μν μν€ν μ² ν¨ν΄ μ€μμ μ»΄ν¬λνΈ μν€ν μ²λ κ°λ ₯νκ³ λ리 μ±νλ μ κ·Ό λ°©μμΌλ‘ λκ°μ λνλ λλ€. μ΄ λΈλ‘κ·Έ ν¬μ€νΈμμλ μ»΄ν¬λνΈ μν€ν μ²μ ν΅μ¬ μμΉμ κΉμ΄ νκ³ λ€μ΄, νμ₯ κ°λ₯νκ³ μ μ§λ³΄μ λ° ν μ€νΈκ° μ©μ΄ν μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆνκΈ° μν μ΄μ , λͺ¨λ² μ¬λ‘ λ° μ€μ κ³ λ € μ¬νμ νꡬν©λλ€.
μ»΄ν¬λνΈ μν€ν μ²λ 무μμΈκ°?
μ»΄ν¬λνΈ μν€ν μ²λ μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό 'μ»΄ν¬λνΈ'λΌκ³ λΆλ¦¬λ μκ³ λ 립μ μ΄λ©° μ¬μ¬μ© κ°λ₯ν λ¨μλ‘ λΆν΄νμ¬ κ΅¬μΆνλ κ²μ μΉνΈνλ λμμΈ ν¨λ¬λ€μμ λλ€. κ° μ»΄ν¬λνΈλ μ체 λ‘μ§, λ°μ΄ν° λ° ννμ μΊ‘μννμ¬ μ ν리μΌμ΄μ λ΄μμ μκΈμμ‘±μ μΈ κ°μ²΄κ° λ©λλ€.
λ κ³ λΈλ‘μΌλ‘ 무μΈκ°λ₯Ό λ§λλ κ²μ μκ°ν΄λ³΄μΈμ. κ° λΈλ‘μ΄ μ»΄ν¬λνΈμ΄λ©°, μ΄ λΈλ‘λ€μ λ€μν λ°©μμΌλ‘ μ‘°ν©νμ¬ λ³΅μ‘ν ꡬ쑰λ₯Ό λ§λ€ μ μμ΅λλ€. λ κ³ λΈλ‘μ΄ μ¬μ¬μ© κ°λ₯νκ³ μλ‘ κ΅μ²΄ν μ μλ κ²μ²λΌ, μ μ€κ³λ μν€ν μ²μ μ»΄ν¬λνΈ λν μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμ΄λ μ¬μ§μ΄ μ¬λ¬ νλ‘μ νΈμ κ±Έμ³ μ¬μ¬μ©ν μ μμ΄μΌ ν©λλ€.
μ»΄ν¬λνΈμ μ£Όμ νΉμ§:
- μ¬μ¬μ©μ±: μ»΄ν¬λνΈλ λμΌν μ ν리μΌμ΄μ λ΄μμ λλ μ¬λ¬ μ ν리μΌμ΄μ μ κ±Έμ³ μ¬λ¬ λ² μ¬μ©λ μ μμ΄ μ½λ μ€λ³΅κ³Ό κ°λ° μκ°μ μ€μ¬μ€λλ€.
- μΊ‘μν: μ»΄ν¬λνΈλ λ΄λΆ ꡬν μΈλΆ μ 보λ₯Ό μΈλΆ μΈκ³λ‘λΆν° μ¨κΈ°κ³ μ μ μλ μΈν°νμ΄μ€λ§ λ ΈμΆν©λλ€. μ΄λ λͺ¨λμ±μ μ¦μ§μν€κ³ μμ‘΄μ±μ μ€μ λλ€.
- λ 립μ±: μ»΄ν¬λνΈλ μλ‘ λ 립μ μ΄μ΄μΌ νλ©°, μ΄λ ν μ»΄ν¬λνΈμ λ³κ²½μ΄ λ€λ₯Έ μ»΄ν¬λνΈμ κΈ°λ₯μ μν₯μ λ―ΈμΉμ§ μμμΌ ν¨μ μλ―Έν©λλ€.
- ν μ€νΈ μ©μ΄μ±: μ»΄ν¬λνΈμ λμμ μμΈ‘ κ°λ₯νκ³ μ μ μλμ΄ μμ΄ κ°λ³μ μΌλ‘ ν μ€νΈνκΈ°κ° λ μ½μ΅λλ€.
- μ μ§λ³΄μ μ©μ΄μ±: μ»΄ν¬λνΈ κΈ°λ° μμ€ν μ μ 체 μ ν리μΌμ΄μ μ μν₯μ μ£Όμ§ μκ³ κ°λ³ μ»΄ν¬λνΈλ₯Ό λ³κ²½ν μ μμΌλ―λ‘ μ μ§λ³΄μ λ° μ λ°μ΄νΈκ° λ μ½μ΅λλ€.
μ»΄ν¬λνΈ μν€ν μ² μ¬μ©μ μ΄μ
μ»΄ν¬λνΈ μν€ν μ²λ₯Ό μ±ννλ©΄ κ°λ° μλͺ μ£ΌκΈ°μ λ€μν μΈ‘λ©΄μ μν₯μ λ―ΈμΉλ μλ§μ μ΄μ μ μ»μ μ μμ΅λλ€:
ν₯μλ μ½λ μ¬μ¬μ©μ±
μ΄λ μλ§λ κ°μ₯ μ€μν μ₯μ μΌ κ²μ λλ€. μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μ€κ³ν¨μΌλ‘μ¨ λμΌν μ½λλ₯Ό μ¬λ¬ λ² μμ±νλ κ²μ νΌν μ μμ΅λλ€. μ μ μκ±°λ μΉμ¬μ΄νΈλ₯Ό ꡬμΆνλ€κ³ μμν΄λ³΄μΈμ. μν μμΈ μ 보(μ΄λ―Έμ§, μ λͺ©, κ°κ²©, μ€λͺ )λ₯Ό νμνλ μ»΄ν¬λνΈλ μν λͺ©λ‘ νμ΄μ§, μν μμΈ νμ΄μ§, μ¬μ§μ΄ μ₯λ°κ΅¬λ μμ½ λ΄μμλ μ¬μ¬μ©λ μ μμ΅λλ€. μ΄λ κ°λ° μκ°μ λν λ¨μΆνκ³ μ ν리μΌμ΄μ μ λ°μ μΌκ΄μ±μ 보μ₯ν©λλ€.
ν₯μλ μ μ§λ³΄μμ±
λ³κ²½μ΄ νμν λ, ν¬κ³ 볡μ‘ν μ½λλ² μ΄μ€λ₯Ό λ€μ§λ λμ κ΄λ ¨ μ»΄ν¬λνΈλ§ μμ νλ©΄ λ©λλ€. λ§μ½ μ μ μκ±°λ μΉμ¬μ΄νΈμμ μν κ°κ²© νμ λ°©μ(μ: ν΅ν κΈ°νΈ μΆκ°)μ λ³κ²½ν΄μΌ νλ€λ©΄, μν μμΈ μ»΄ν¬λνΈλ§ μ λ°μ΄νΈνλ©΄ λ³κ²½ μ¬νμ΄ μ ν리μΌμ΄μ μ 체μ μλμΌλ‘ μ νλ©λλ€.
μ¦κ°λ ν μ€νΈ μ©μ΄μ±
μκ³ λ 립μ μΈ μ»΄ν¬λνΈλ κ°λ³μ μΌλ‘ ν μ€νΈνκΈ°κ° λ μ½μ΅λλ€. κ° μ»΄ν¬λνΈμ λν λ¨μ ν μ€νΈλ₯Ό μμ±νμ¬ μμλλ‘ μλνλμ§ νμΈν μ μμ΅λλ€. μ΄λ λ λμ μ½λ νμ§λ‘ μ΄μ΄μ§κ³ λ²κ·Έμ μνμ μ€μ λλ€. μλ₯Ό λ€μ΄, νΌ μ»΄ν¬λνΈμ λν ν μ€νΈλ₯Ό μμ±νμ¬ μ¬μ©μ μ λ ₯μ μ¬λ°λ₯΄κ² κ²μ¦νκ³ νΌ μ μΆμ μ²λ¦¬νλμ§ νμΈν μ μμ΅λλ€.
λ λΉ λ₯Έ κ°λ° μ£ΌκΈ°
κΈ°μ‘΄ μ»΄ν¬λνΈλ₯Ό μ¬μ¬μ©νκ³ λ 립μ μΌλ‘ ν μ€νΈνλ©΄ κ°λ° νλ‘μΈμ€κ° λΉ¨λΌμ§λλ€. μλ₯Ό λ€μ΄, 미리 λ§λ€μ΄μ§ λ μ§ μ νκΈ° μ»΄ν¬λνΈλ₯Ό μ¬μ©νλ©΄ μ²μλΆν° κ°λ°ν νμκ° μμ΄ μλΉν κ°λ° μκ°μ μ μ½ν μ μμ΅λλ€.
ν₯μλ νμ
μ»΄ν¬λνΈ μν€ν μ²λ λͺ¨λμ±μ μ΄μ§νμ¬ μ¬λ¬ κ°λ°μκ° λμμ μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμμ μμ νκΈ° μ½κ² λ§λλλ€. μ΄λ νΉν 볡μ‘ν νλ‘μ νΈλ₯Ό μ§ννλ λκ·λͺ¨ νμ μ μ©ν©λλ€. ν νμ μ¬μ©μ μΈμ¦ μ»΄ν¬λνΈ κ΅¬μΆμ μ§μ€νκ³ , λ€λ₯Έ νμ μν μΉ΄νλ‘κ·Έ μ»΄ν¬λνΈ μμ μ ν μ μμΌλ©°, μ€λ³΅κ³Ό μμ‘΄μ±μ μ΅μνλ©λλ€.
νμ₯μ±
μ»΄ν¬λνΈ μν€ν μ²λ μμ€ν μ λλ¨Έμ§ λΆλΆμ μν₯μ μ£Όμ§ μκ³ μ»΄ν¬λνΈλ₯Ό μΆκ°νκ±°λ μ κ±°ν μ μμΌλ―λ‘ μ ν리μΌμ΄μ νμ₯μ λ μ½κ² λ§λλλ€. μ μ μκ±°λ λΉμ¦λμ€κ° μ±μ₯ν¨μ λ°λΌ μλ‘μ΄ μ»΄ν¬λνΈλ₯Ό ꡬμΆνκ³ κΈ°μ‘΄ μν€ν μ²μ ν΅ν©νμ¬ μλ‘μ΄ κΈ°λ₯μ μ½κ² μΆκ°ν μ μμ΅λλ€.
μ»΄ν¬λνΈ λμμΈμ ν΅μ¬ μμΉ
μ»΄ν¬λνΈ μν€ν μ²μ μ΄μ μ ν¨κ³Όμ μΌλ‘ νμ©νλ €λ©΄ νΉμ λμμΈ μμΉμ μ€μνλ κ²μ΄ μ€μν©λλ€:
λ¨μΌ μ± μ μμΉ (SRP)
κ° μ»΄ν¬λνΈλ λ¨μΌνκ³ μ μ μλ μ± μμ κ°μ ΈμΌ ν©λλ€. ν κ°μ§ μΌμ νκ³ κ·Έκ²μ μνλ λ° μ§μ€ν΄μΌ ν©λλ€. μ¬μ©μ νλ‘νμ νμνλ μ»΄ν¬λνΈλ μ¬μ©μμ μ 보λ₯Ό νμνλ μ± μλ§ μ ΈμΌ νλ©°, μ¬μ©μ μΈμ¦μ΄λ λ°μ΄ν° κ°μ Έμ€κΈ°λ₯Ό μ²λ¦¬ν΄μλ μ λ©λλ€.
κ΄μ¬μ¬ λΆλ¦¬ (SoC)
μ»΄ν¬λνΈ λ΄μ κ΄μ¬μ¬λ₯Ό λΆλ¦¬νμ¬ μ»΄ν¬λνΈ κΈ°λ₯μ λ€λ₯Έ μΈ‘λ©΄λ€μ΄ μλ‘ λ 립μ μ΄ λλλ‘ λ³΄μ₯ν©λλ€. μ΄λ μ»΄ν¬λνΈμ λ‘μ§, λ°μ΄ν°, ννμ λ€λ₯Έ λͺ¨λλ‘ λΆλ¦¬ν¨μΌλ‘μ¨ λ¬μ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ»΄ν¬λνΈ λ΄μμ λ°μ΄ν° κ°μ Έμ€κΈ° λ‘μ§κ³Ό UI λ λλ§ λ‘μ§μ λΆλ¦¬ν©λλ€.
λμ¨ν κ²°ν©
μ»΄ν¬λνΈλ λμ¨νκ² κ²°ν©λμ΄μΌ νλ©°, μ΄λ μλ‘μ λν μμ‘΄μ±μ μ΅μνν΄μΌ ν¨μ μλ―Έν©λλ€. μ΄λ μ»΄ν¬λνΈλ₯Ό λ 립μ μΌλ‘ μμ νκ³ ν μ€νΈνκΈ° μ½κ² λ§λλλ€. λ€λ₯Έ μ»΄ν¬λνΈμ λ΄λΆ μνμ μ§μ μ κ·Όνλ λμ , μ μ μλ μΈν°νμ΄μ€λ μ΄λ²€νΈλ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈ κ°μ ν΅μ ν©λλ€.
λμ μμ§λ
μ»΄ν¬λνΈλ λμ μμ§λλ₯Ό κ°μ ΈμΌ νλ©°, μ΄λ λͺ¨λ μμκ° μλ‘ λ°μ νκ² κ΄λ ¨λμ΄ μμ΄μΌ ν¨μ μλ―Έν©λλ€. μ΄λ μ»΄ν¬λνΈλ₯Ό μ΄ν΄νκ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€. κ΄λ ¨λ κΈ°λ₯κ³Ό λ°μ΄ν°λ₯Ό μ»΄ν¬λνΈ λ΄μ ν¨κ» κ·Έλ£Ήνν©λλ€.
κ°λ°©/νμ μμΉ (OCP)
μ»΄ν¬λνΈλ νμ₯μ λν΄μλ μ΄λ € μμ΄μΌ νμ§λ§, μμ μ λν΄μλ λ«ν μμ΄μΌ ν©λλ€. μ΄λ κΈ°μ‘΄ μ½λλ₯Ό μμ νμ§ μκ³ λ μ»΄ν¬λνΈμ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μ μμ΄μΌ ν¨μ μλ―Έν©λλ€. μ΄λ μμ, κ΅¬μ± λλ μΈν°νμ΄μ€λ₯Ό μ¬μ©νμ¬ λ¬μ±ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, ν΅μ¬ λ²νΌ μ»΄ν¬λνΈλ₯Ό μμ νμ§ μκ³ λ€λ₯Έ μ€νμΌμ΄λ λμμΌλ‘ νμ₯ν μ μλ κΈ°λ³Έ λ²νΌ μ»΄ν¬λνΈλ₯Ό λ§λλλ€.
μ»΄ν¬λνΈ μν€ν μ² κ΅¬νμ μν μ€μ κ³ λ € μ¬ν
μ»΄ν¬λνΈ μν€ν μ²λ μλΉν μ΄μ μ μ 곡νμ§λ§, μ±κ³΅μ μΈ κ΅¬νμ μν΄μλ μ μ€ν κ³νκ³Ό μ€νμ΄ νμν©λλ€. λ€μμ λͺ κ°μ§ μ€μ μ μΈ κ³ λ € μ¬νμ λλ€:
μ¬λ°λ₯Έ νλ μμν¬ λλ λΌμ΄λΈλ¬λ¦¬ μ ν
React, Angular, Vue.jsμ κ°μ μ¬λ¬ μΈκΈ° μλ νλ‘ νΈμλ νλ μμν¬μ λΌμ΄λΈλ¬λ¦¬λ μ»΄ν¬λνΈ μν€ν μ² κ°λ μ μ€μ¬μΌλ‘ ꡬμΆλμμ΅λλ€. μ¬λ°λ₯Έ νλ μμν¬λ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ ννλ κ²μ νλ‘μ νΈ μꡬ μ¬ν, ν μ λ¬Έμ± λ° μ±λ₯ κ³ λ € μ¬νμ λ°λΌ λ¬λΌμ§λλ€.
- React: μ¬μ©μ μΈν°νμ΄μ€ ꡬμΆμ μν JavaScript λΌμ΄λΈλ¬λ¦¬μ λλ€. Reactλ μ»΄ν¬λνΈ κΈ°λ° μ κ·Ό λ°©μμ μ¬μ©νκ³ λ¨λ°©ν₯ λ°μ΄ν° νλ¦μ κ°μ‘°νμ¬ μ»΄ν¬λνΈλ₯Ό μΆλ‘ νκ³ ν μ€νΈνκΈ° μ½κ² λ§λλλ€. Facebook, Instagram, Netflixμ κ°μ νμ¬μμ λ리 μ¬μ©λ©λλ€.
- Angular: 볡μ‘ν μΉ μ ν리μΌμ΄μ ꡬμΆμ μν ν¬κ΄μ μΈ νλ μμν¬μ λλ€. Angularλ μμ‘΄μ± μ£Όμ λ° TypeScript μ§μκ³Ό κ°μ κΈ°λ₯μΌλ‘ μ»΄ν¬λνΈ κ°λ°μ ꡬ쑰νλ μ κ·Ό λ°©μμ μ 곡ν©λλ€. Google λ° κΈ°μ μμ€μ μ ν리μΌμ΄μ μμ κ΄λ²μνκ² μ¬μ©λ©λλ€.
- Vue.js: μ¬μ©μ μΈν°νμ΄μ€ ꡬμΆμ μν μ μ§μ νλ μμν¬μ λλ€. Vue.jsλ λ¨μμ±κ³Ό μ¬μ© νΈμμ±μΌλ‘ μ λͺ νμ¬ μκ·λͺ¨ νλ‘μ νΈλ μ»΄ν¬λνΈ μν€ν μ²μ μλ‘μ΄ νμκ² μ’μ μ νμ λλ€. μμμ ννμ μ§μμμ μΈκΈ°κ° μμΌλ©° μ μΈκ³μ μΌλ‘ μ£Όλͺ©λ°κ³ μμ΅λλ€.
μ»΄ν¬λνΈ λμμΈ λ° λͺ λͺ κ·μΉ
μ½λ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€κΈ° μν΄ μ»΄ν¬λνΈμ λν λͺ ννκ³ μΌκ΄λ λͺ λͺ κ·μΉμ μ립ν©λλ€. μλ₯Ό λ€μ΄, μ»΄ν¬λνΈ μ νμ λνλ΄κΈ° μν΄ μ λμ¬λ μ λ―Έμ¬(μ: `ButtonComponent`, `ProductCard`)λ₯Ό μ¬μ©ν©λλ€. λν μ»΄ν¬λνΈλ₯Ό λλ ν°λ¦¬μ νμΌλ‘ ꡬμ±νλ λͺ νν κ·μΉμ μ μν©λλ€.
μν κ΄λ¦¬
μ»΄ν¬λνΈμ μνλ₯Ό κ΄λ¦¬νλ κ²μ λμ μ΄κ³ μνΈμμ©μ μΈ UIλ₯Ό ꡬμΆνλ λ° μ€μν©λλ€. λ€λ₯Έ νλ μμν¬μ λΌμ΄λΈλ¬λ¦¬λ μν κ΄λ¦¬μ λν λ€μν μ κ·Ό λ°©μμ μ 곡ν©λλ€. 볡μ‘ν μ ν리μΌμ΄μ μ κ²½μ° Redux(React), NgRx(Angular) λλ Vuex(Vue.js)μ κ°μ μν κ΄λ¦¬ λΌμ΄λΈλ¬λ¦¬ μ¬μ©μ κ³ λ €νμμμ€.
μ»΄ν¬λνΈ κ° ν΅μ
μ»΄ν¬λνΈκ° μλ‘ ν΅μ ν μ μλ λͺ ννκ³ μΌκ΄λ λ©μ»€λμ¦μ μ μν©λλ€. μ΄λ props, μ΄λ²€νΈ λλ 곡μ μνλ₯Ό ν΅ν΄ λ¬μ±ν μ μμ΅λλ€. κ²μ-ꡬλ ν¨ν΄μ΄λ λ©μμ§ νλ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈλ₯Ό κΈ΄λ°νκ² κ²°ν©νλ κ²μ νΌνμμμ€.
μ»΄ν¬λνΈ μ‘°ν© λ μμ
λ λ¨μν μ»΄ν¬λνΈλ‘λΆν° 볡μ‘ν μ»΄ν¬λνΈλ₯Ό ꡬμΆνκΈ° μν μ¬λ°λ₯Έ μ κ·Ό λ°©μμ μ ννμμμ€. μ¬λ¬ κ°μ μμ μ»΄ν¬λνΈλ₯Ό λ ν° μ»΄ν¬λνΈλ‘ κ²°ν©νλ μ‘°ν©(Composition)μ μΌλ°μ μΌλ‘ κΈ΄λ°ν κ²°ν©κ³Ό μ½λ μ€λ³΅μΌλ‘ μ΄μ΄μ§ μ μλ μμ(Inheritance)λ³΄λ€ μ νΈλ©λλ€. μλ₯Ό λ€μ΄, `ProductImage`, `ProductTitle`, `ProductDescription`, `AddToCartButton`κ³Ό κ°μ μμ μ»΄ν¬ν°νΈλ€μ μ‘°ν©νμ¬ `ProductDetails` μ»΄ν¬λνΈλ₯Ό λ§λλλ€.
ν μ€νΈ μ λ΅
μ»΄ν¬λνΈμ λν ν¬κ΄μ μΈ ν μ€νΈ μ λ΅μ ꡬνν©λλ€. μ¬κΈ°μλ κ°λ³ μ»΄ν¬λνΈμ λμμ κ²μ¦νκΈ° μν λ¨μ ν μ€νΈμ μ»΄ν¬λνΈλ€μ΄ ν¨κ» μ¬λ°λ₯΄κ² μλνλμ§ νμΈνκΈ° μν ν΅ν© ν μ€νΈκ° ν¬ν¨λ©λλ€. Jest, Mocha λλ Jasmineκ³Ό κ°μ ν μ€νΈ νλ μμν¬λ₯Ό μ¬μ©νμμμ€.
μ€μ μ»΄ν¬λνΈ μν€ν μ² μμ
λ Όμλ κ°λ μ λ μμΈν μ€λͺ νκΈ° μν΄ μ€μ μ»΄ν¬λνΈ μν€ν μ²μ λͺ κ°μ§ μλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
μ μ μκ±°λ μΉμ¬μ΄νΈ (κΈλ‘λ² μμ)
- μν μΉ΄λ μ»΄ν¬λνΈ: μνμ μ΄λ―Έμ§, μ λͺ©, κ°κ²© λ° κ°λ¨ν μ€λͺ μ νμν©λλ€. λ€μν μν λͺ©λ‘ νμ΄μ§μμ μ¬μ¬μ© κ°λ₯ν©λλ€.
- μ₯λ°κ΅¬λ μ»΄ν¬λνΈ: μ¬μ©μμ μ₯λ°κ΅¬λμ λ΄κΈ΄ μνλ€κ³Ό μ΄ κ°κ²©, κ·Έλ¦¬κ³ μ₯λ°κ΅¬λλ₯Ό μμ ν μ μλ μ΅μ μ νμν©λλ€.
- κ²°μ νΌ μ»΄ν¬λνΈ: μ¬μ©μμ λ°°μ‘ λ° κ²°μ μ 보λ₯Ό μμ§ν©λλ€.
- 리뷰 μ»΄ν¬λνΈ: μ¬μ©μκ° μνμ λν 리뷰λ₯Ό μ μΆν μ μλλ‘ ν©λλ€.
μμ λ―Έλμ΄ νλ«νΌ (κΈλ‘λ² μμ)
- κ²μλ¬Ό μ»΄ν¬λνΈ: μμ±μ, λ΄μ©, νμμ€ν¬ν, μ’μμ/λκΈμ ν¬ν¨ν μ¬μ©μμ κ²μλ¬Όμ νμν©λλ€.
- λκΈ μ»΄ν¬λνΈ: κ²μλ¬Όμ λν λκΈμ νμν©λλ€.
- μ¬μ©μ νλ‘ν μ»΄ν¬λνΈ: μ¬μ©μμ νλ‘ν μ 보λ₯Ό νμν©λλ€.
- λ΄μ€ νΌλ μ»΄ν¬λνΈ: μ¬μ©μ λ€νΈμν¬μ κ²μλ¬Όμ μ§κ³νμ¬ νμν©λλ€.
λμ보λ μ ν리μΌμ΄μ (κΈλ‘λ² μμ)
- μ°¨νΈ μ»΄ν¬λνΈ: λ§λ μ°¨νΈ, μ μ°¨νΈ λλ νμ΄ μ°¨νΈμ κ°μ κ·Έλν½ νμμΌλ‘ λ°μ΄ν°λ₯Ό νμν©λλ€.
- ν μ΄λΈ μ»΄ν¬λνΈ: ν νμμΌλ‘ λ°μ΄ν°λ₯Ό νμν©λλ€.
- νΌ μ»΄ν¬λνΈ: μ¬μ©μκ° λ°μ΄ν°λ₯Ό μ λ ₯νκ³ μ μΆν μ μλλ‘ ν©λλ€.
- μλ¦Ό μ»΄ν¬λνΈ: μ¬μ©μμκ² μλ¦Όμ΄λ κ²½κ³ λ₯Ό νμν©λλ€.
μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈ κ΅¬μΆμ μν λͺ¨λ² μ¬λ‘
μ§μ μΌλ‘ μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό λ§λ€κΈ° μν΄μλ μΈλΆ μ¬νμ λν μ£Όμμ λͺ¨λ² μ¬λ‘ μ€μκ° νμν©λλ€:
μ»΄ν¬λνΈλ₯Ό μκ³ μ§μ€μ μΌλ‘ μ μ§νκΈ°
μμ μ»΄ν¬λνΈλ μΌλ°μ μΌλ‘ μ¬μ¬μ©νκ³ μ μ§λ³΄μνκΈ°κ° λ μ½μ΅λλ€. λ무 λ§μ κ²μ νλ €λ ν¬κ³ λ¨μΌν μ»΄ν¬λνΈλ₯Ό λ§λ€μ§ λ§μμμ€.
ꡬμ±μ μν΄ Props μ¬μ©νκΈ°
μ»΄ν¬λνΈμ λμκ³Ό λͺ¨μμ ꡬμ±νκΈ° μν΄ props(μμ±)λ₯Ό μ¬μ©νμμμ€. μ΄λ₯Ό ν΅ν΄ λ΄λΆ μ½λλ₯Ό μμ νμ§ μκ³ λ μ»΄ν¬λνΈλ₯Ό μ¬μ©μ μ μν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λ²νΌ μ»΄ν¬λνΈλ ν μ€νΈ, λμ λ° λͺ¨μμ μ¬μ©μ μ μνκΈ° μν΄ `label`, `onClick`, `style`κ³Ό κ°μ propsλ₯Ό λ°μ μ μμ΅λλ€.
μ§μ μ μΈ DOM μ‘°μ νΌνκΈ°
μ»΄ν¬λνΈ λ΄μμ μ§μ DOMμ μ‘°μνλ κ²μ νΌνμμμ€. λμ , νλ μμν¬λ λΌμ΄λΈλ¬λ¦¬μ λ λλ§ λ©μ»€λμ¦μ μμ‘΄νμ¬ UIλ₯Ό μ λ°μ΄νΈνμμμ€. μ΄λ μ»΄ν¬λνΈλ₯Ό λ μ΄μμ± μκ³ ν μ€νΈνκΈ° μ½κ² λ§λλλ€.
ν¬κ΄μ μΈ λ¬Έμ μμ±νκΈ°
μ»΄ν¬λνΈμ λͺ©μ , props λ° μ¬μ© μμ λ₯Ό ν¬ν¨νμ¬ μ² μ νκ² λ¬Έμννμμμ€. μ΄λ λ€λ₯Έ κ°λ°μλ€μ΄ μ»΄ν¬λνΈλ₯Ό μ΄ν΄νκ³ μ¬μ¬μ©νκΈ° μ½κ² λ§λλλ€. JSDocμ΄λ Storybookκ³Ό κ°μ λ¬Έμ μμ±κΈ° μ¬μ©μ κ³ λ €νμμμ€.
μ»΄ν¬λνΈ λΌμ΄λΈλ¬λ¦¬ μ¬μ©νκΈ°
μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈλ₯Ό μ 리νκ³ κ³΅μ νκΈ° μν΄ μ»΄ν¬λνΈ λΌμ΄λΈλ¬λ¦¬ μ¬μ©μ κ³ λ €νμμμ€. μ»΄ν¬λνΈ λΌμ΄λΈλ¬λ¦¬λ μ»΄ν¬λνΈλ₯Ό μν μ€μ μ μ₯μλ₯Ό μ 곡νλ©° κ°λ°μλ€μ΄ μ»΄ν¬λνΈλ₯Ό λ°κ²¬νκ³ μ¬μ¬μ©νκΈ° μ½κ² λ§λλλ€. μμλ‘λ Storybook, Bit, NXκ° μμ΅λλ€.
μ»΄ν¬λνΈ μν€ν μ²μ λ―Έλ
μ»΄ν¬λνΈ μν€ν μ²λ μ μ μΈ κ°λ μ΄ μλλλ€; μΉ κ°λ° κΈ°μ μ λ°μ κ³Ό ν¨κ» κ³μν΄μ μ§νν©λλ€. μ»΄ν¬λνΈ μν€ν μ²μ μλ‘μ΄ νΈλ λ μ€ μΌλΆλ λ€μκ³Ό κ°μ΅λλ€:
μΉ μ»΄ν¬λνΈ
μΉ μ»΄ν¬λνΈλ μ¬μ¬μ© κ°λ₯ν μ¬μ©μ μ μ HTML μμλ₯Ό λ§λ€ μ μκ² ν΄μ£Όλ μΉ νμ€ μ§ν©μ λλ€. μ΄λ μ¬μ© μ€μΈ νλ μμν¬λ λΌμ΄λΈλ¬λ¦¬μ κ΄κ³μμ΄ λͺ¨λ μΉ μ ν리μΌμ΄μ μμ μ¬μ©ν μ μλ μ»΄ν¬λνΈλ₯Ό ꡬμΆνλ νλ«νΌμ ꡬμ λ°μ§ μλ λ°©λ²μ μ 곡ν©λλ€. μ΄λ μ¬λ¬ λ€λ₯Έ νλ‘μ νΈ κ°μ μνΈ μ΄μ©μ±κ³Ό μ¬μ¬μ©μ±μ ν₯μμν΅λλ€.
λ§μ΄ν¬λ‘ νλ‘ νΈμλ
λ§μ΄ν¬λ‘ νλ‘ νΈμλλ μ»΄ν¬λνΈ μν€ν μ²μ κ°λ μ μ 체 νλ‘ νΈμλ μ ν리μΌμ΄μ μΌλ‘ νμ₯ν©λλ€. μ΄λ λκ·λͺ¨ νλ‘ νΈμλ μ ν리μΌμ΄μ μ λ 립μ μΌλ‘ κ°λ°νκ³ λ°°ν¬ν μ μλ λ μμ λ 립 μ ν리μΌμ΄μ μΌλ‘ λΆν΄νλ κ²μ ν¬ν¨ν©λλ€. μ΄λ νΉν 볡μ‘ν νλ‘μ νΈλ₯Ό μ§ννλ λκ·λͺ¨ νμκ² λ ν° μ μ°μ±κ³Ό νμ₯μ±μ μ 곡ν©λλ€.
μλ²λ¦¬μ€ μ»΄ν¬λνΈ
μλ²λ¦¬μ€ μ»΄ν¬λνΈλ μ»΄ν¬λνΈ μν€ν μ²μ μ΄μ κ³Ό μλ²λ¦¬μ€ μ»΄ν¨ν μ νμ₯μ± λ° λΉμ© ν¨μ¨μ±μ κ²°ν©ν©λλ€. μ΄λ₯Ό ν΅ν΄ AWS Lambdaλ Azure Functionsμ κ°μ μλ²λ¦¬μ€ νλ«νΌμμ μ€νλλ μ»΄ν¬λνΈλ₯Ό ꡬμΆνκ³ λ°°ν¬ν μ μμ΅λλ€. μ΄λ λ§μ΄ν¬λ‘μλΉμ€λ APIλ₯Ό ꡬμΆνλ λ° νΉν μ μ©ν μ μμ΅λλ€.
κ²°λ‘
μ»΄ν¬λνΈ μν€ν μ²λ νλ νλ‘ νΈμλ κ°λ°μ κΈ°λ³Έ μμΉμ λλ€. μ»΄ν¬λνΈ κΈ°λ° λμμΈμ μ±νν¨μΌλ‘μ¨ λ νμ₯ κ°λ₯νκ³ , μ μ§λ³΄μ μ©μ΄νλ©°, ν μ€νΈ κ°λ₯ν μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆν μ μμ΅λλ€. μ΄ λΈλ‘κ·Έ ν¬μ€νΈμμ λ Όμλ ν΅μ¬ μμΉκ³Ό λͺ¨λ² μ¬λ‘λ₯Ό μ΄ν΄νλ©΄ μκ°μ μνμ 견λ μ μλ κ²¬κ³ νκ³ ν¨μ¨μ μΈ νλ‘ νΈμλ μ ν리μΌμ΄μ μ λ§λλ λ° νμ΄ λ κ²μ λλ€. κ°λ¨ν μΉμ¬μ΄νΈλ₯Ό λ§λ€λ 볡μ‘ν μΉ μ ν리μΌμ΄μ μ λ§λ€λ , μ»΄ν¬λνΈ μν€ν μ²λ κ°λ° νλ‘μΈμ€μ μ½λ νμ§μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
νμ νλ‘μ νΈμ νΉμ μꡬ μ¬νμ κ³ λ €νκ³ μ»΄ν¬λνΈ μν€ν μ²λ₯Ό ν¨κ³Όμ μΌλ‘ ꡬννκΈ° μν μ¬λ°λ₯Έ λꡬμ κΈ°μ μ μ ννλ κ²μ κΈ°μ΅νμμμ€. μ»΄ν¬λνΈ μν€ν μ²λ₯Ό λ§μ€ν°νλ μ¬μ μ μ§μμ μΈ νμ΅ κ³Όμ μ΄μ§λ§, κ·Έ 보μμ λ Έλ ₯ν κ°μΉκ° μΆ©λΆν©λλ€.