React Component
λ°μ΄ν°
νλ‘ νΈμλ κ°λ°μλ μ¬μ©μ μΈν°νμ΄μ€(UI)λ₯Ό κ°λ°νμ¬ μ¬μ©μμκ² λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ μν μ λ΄λΉνλ€.
Reactλ λ°μ΄ν°λ₯Ό UIλ‘ νννκΈ° μν΄ μ μΈμ μΈ λ°©μ(HTMLκ³Ό μ μ¬ν λͺ¨μμ DSLμ μ¬μ©)μΌλ‘ κ°λ°νλ€.
λ°±μλλ λ°μ΄ν°λ₯Ό JSON
ννλ‘ λλ €μ£Όλ APIλ₯Ό μ 곡νλ€. (REST API, GraphQL)
REST API
HTTPλ₯Ό μ¬μ©ν΄μ μλ‘ μ ν΄λ μ€ν(end point, HTTP Method)μ νμ©νμ¬ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μΌλ©° ν΅μ νλ κ²
GET, POST, PUT/PATCH, DELETE -> CRUD
Resource μ€μ¬
REST APIμ μ μ½μ‘°κ±΄
REST APIλ 4κ°μ§ μ μ½μ‘°κ±΄μΌλ‘ μμμ μλ³
, λ©μΈμ§λ₯Ό ν΅ν 리μμ€ μ‘°μ
, μκΈ°μμ μ λ©μμ§
, μ ν리μΌμ΄μ
μ μνμ λν μμ§μΌλ‘μ νμ΄νΌλ―Έλμ΄λ₯Ό λ§μ‘±
ν΄μΌ νλλ° μ΄λ―Έ λ§μ μ¬λλ€μ΄ μ΄ μ μ½μ‘°κ±΄μ μ§ν€μ§ μμλ REST APIλΌκ³ λΆλ₯΄κΈ° λλ¬Έμ HTTP APIμ κ°μ μλ―Έλ‘ μ¬μ©λ¨
GraphQL
Facebookμμ κ°λ°ν Graph μλ£κ΅¬μ‘°μ Query μΈμ΄ 쿼리(Query)λ₯Ό ν΅ν΄ μ»κ³ μ νλ κ²μ μ μΈνμ¬ λ°μ΄ν°λ₯Ό μ»λλ€.
쿼리λ₯Ό κΈ°λ°μΌλ‘νμ¬ SQLκ³Ό λΉμ·νλ€.
Query(Read), Mutation(Commend: Create, Update, Delete), Subscription(Event)
REST APIμ λμμΌλ‘ λμ€κ²λ λ±μ₯ λ°°κ²½
REST APIλ₯Ό μ¬μ©ν λ, ν΄λΌμ΄μΈνΈλ νμν λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ° μν΄ μ¬λ¬ κ°μ API μλν¬μΈνΈλ₯Ό νΈμΆνλ€. μ΄λ, λΆνμν λ°μ΄ν°λ ν¨κ» μ μ‘λκΈ° λλ¬Έμ λμν λλΉμ μλ² λΆν μ¦κ°μ λ¬Έμ κ° λ°μν μ μλ€.
GraphQLμ μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄, ν΄λΌμ΄μΈνΈκ° νμλ‘ νλ λ°μ΄ν°λ§μ μ νμ μΌλ‘ μμ²νκ³ μλ΅μΌλ‘ λ°μμ¬ μ μλλ‘ μ§μνλ€.
JSON(Javascript Object Notation)
ν΄λΌμ΄μΈνΈμ μλ²κ° λ°μ΄ν°λ₯Ό κ΅ννκΈ° μν΄ λ§λ€μ΄μ§ ν¬λ§· By Douglas Crockford
ν΄λΌμ΄μΈνΈμ μλ²κ°μ λ°μ΄ν°λ₯Ό (HTTP)κ΅νν λ ν¬λ§·μ JSON νμμ΄μ§λ§ λ¬Έμμ΄λ‘ λ³νλμ΄ μ£Όκ³ λ°λλ€.
μ΄λ° JSON νμμ λ¬Έμμ΄μ μ¬μ©νκΈ° μν΄ JSON λ΄μ₯ κ°μ²΄μ λ©μλκ° μ 곡λλ€.
JSON.stringify() β JSON κ°μ²΄λ₯Ό λ¬Έμμ΄λ‘ λ³ννλ ν¨μ
JSON.parse() β JSON νμμ λ¬Έμμ΄μ μλ°μ€ν¬λ¦½νΈ κ°μ²΄λ‘ λ³νν΄μ£Όλ ν¨μ
DSL(Domain-Specific Language)
νΉμ ν λλ©μΈμ λ§κ² μ€κ³λ μΈμ΄
νΉμ λΆμΌ(λλ©μΈ)μμ μμ£Ό μ¬μ©λλ μ©μ΄μ κ·μΉμ κ°λ μΈμ΄
ν΄λΉ λΆμΌμμ κ°λ°μλ€μ΄ λμ± μ½κ² λ¬Έμ λ₯Ό ν΄κ²°ν μ μλλ‘ λμμ€λ€.
SQL β λ°μ΄ν°λ² μ΄μ€μ κ΄λ ¨λ λ¬Έμ λ₯Ό ν΄κ²°νλ DSL μΈμ΄ (λ°μ΄ν°λ² μ΄μ€)
HTML β μΉ νμ΄μ§λ₯Ό ꡬμ±νκΈ° μν΄ μ¬μ©λλ DSL μΈμ΄ (μΉ νμ΄μ§)
JSX β UIλ₯Ό κ°λ°νκΈ° μν΄ Javascript + XML λ¬Έλ²μ κ²°ν©ν DSL μΈμ΄ (UI)
μ μΈν νλ‘κ·Έλλ° vs λͺ
λ Ήν νλ‘κ·Έλλ°
μ μΈν νλ‘κ·Έλλ°
μ μΈν νλ‘κ·Έλλ°μ '무μμ' ν΄μΌ νλμ§μ μ΄μ μ΄ λ§μΆ°μ§ κ°λ°μλ μνλ κ²°κ³Όλ₯Ό μ μΈνκ³ μ»΄ν¨ν°κ° κ·Έ μνλ μμ μ λ¬μ±νκΈ° μν΄ μ€μ€λ‘ μ²λ¦¬νλλ‘ νλ€.
λͺ λ Ήν νλ‘κ·Έλλ°
λͺ λ Ήν νλ‘κ·Έλλ°μ 'μ΄λ»κ²' ν΄μΌ νλμ§μ μ΄μ μ΄ λ§μΆ°μ§ κ°λ°μλ μ»΄ν¨ν°κ° μνν΄μΌ ν λͺ λ Ήλ¬Έμ μμ°¨μ μΌλ‘ μμ±νκ³ μ΄λ₯Ό μ€ννμ¬ μνλ κ²°κ³Όλ₯Ό μ»λλ€.
ν¨μν νλ‘κ·Έλλ°
ν¨μν νλ‘κ·Έλλ°μμλ λͺ λ Ήμ μΌλ‘ λ°λ³΅λλ μμ μ μΆμνν¨μΌλ‘μ¨ λμΌν μμ μ μ μΈμ μΌλ‘ μμ±ν μ μκ² ν΄μ€λ€.
μ»΄ν¬λνΈ κ³μΈ΅ ꡬ쑰
λ¨μν μ»΄ν¬λνΈλ₯Ό μ‘°ν©νμ¬ λ³΅μ‘ν UIλ₯Ό ꡬννλ€. β React κ°λ ₯ν νΉμ§β¨ μ‘°ν©μ κ°μ§μλ₯Ό νλ°μ μΌλ‘ λ릴 μ μλ κ°μ₯ μ νμ μΈ λ°©λ²
μ»΄ν¬λνΈλ₯Ό λ¨μνκ² κ΅¬ννκΈ° μν λͺκ°μ§ κΈ°μ€
1. SRP(Single Responsibility Principle)
λ¨μΌ μ± μ μμΉ β νλμ κΈ°λ₯μ μ€μ§ νλμ μ± μλ§ κ°μ ΈμΌ νλ€.
λͺ¨λ
, class
, ν¨μ
μ κ°μ μννΈμ¨μ΄μ ꡬμ±μμλ νλμ μ±
μλ§μ κ°μ ΈμΌ νλ©°,
λ³κ²½μ΄ λ°μν λλ κ·Έ μ΄μ κ° λ¨ νλμ¬μΌ νλ€λ κ²μ μλ―Ένλ€.
μ΄ μμΉμ μ€μνλ©΄ μ½λμ μμ§λκ° λμμ Έ μ½λμ νμ₯μ±κ³Ό μ μ§λ³΄μμ±μ΄ λμμ§λ€.
μ»΄ν¬λνΈκ° 컀μ§κ³ μλ€λ©΄ SRPλ₯Ό μ€μνκ³ μλμ§ μ κ²ν΄λ³΄μ~
Single Responsibility(λ¨μΌ μ± μ)
Open/Close(κ°λ°©-νμ)
Liskovβs Substitution(리μ€μ½ν μΉν)
Interface Segregation(μΈν°νμ΄μ€ λΆλ¦¬)
Dependency Inversion(μμ‘΄ κ΄κ³ μμ )
2. CSS
κΈ°λ₯λ³λ‘ ꡬλΆνμ¬ μμ±νλ CSS ν΄λμ€ λͺ μ΄λ Styled Component λ€μ΄λ°μ μ»΄ν¬λνΈλ₯Ό κ³μΈ΅μ μΌλ‘ λλλ κ·μΉμΌλ‘ νμ©λ μ μλ€.
μ΄λ¬ν κΈ°μ€λ€μ μ κ·Ήμ μΌλ‘ νμ©νμ¬ μ»΄ν¬λνΈλ₯Ό μΈλΆμ μΌλ‘ λλκ³ , κ° μ»΄ν¬λνΈκ° λͺ ννκ² μν κ³Ό μ± μμ κ°μ§λλ‘ κ΅¬μ±ν μ μλ€.
3. Design Layer
ꡬ쑰μ μΌλ‘ μ μ§μ¬μ§ λμμΈμ νΈλ¦¬ ννμΈ λ μ΄μ΄ κ΅¬μ‘°λ‘ μ§μ¬μ Έ μλ€.
λμμΈ κ΅¬μ‘°λ₯Ό νμ©νμ¬ μ»΄ν¬λνΈλ₯Ό μΈλΆμ μΌλ‘ λλ μ μλ€.
4. Information Arhitecture
JSON Schemaμ μν₯
μλ²μμ μ£Όλ λ°μ΄ν° ꡬ쑰λ₯Ό κΈ°μ€μΌλ‘ μ»΄ν¬λνΈλ₯Ό μ€κ³νκΈ°λ νλ€.
보ν΅μ UI μμ μ΄ λ¨Όμ μ§ννκ³ μλ² APIκ° νμ λμ€κΈ° λλ¬Έμ UI λμμΈμ λ μ ν©ν ννλ‘ μλ² μΈ‘ λ°μ΄ν°λ₯Ό μ¬κ°κ³΅νκ±°λ, λ°μ΄ν° ꡬ쑰λ₯Ό λ³κ²½ν΄λ¬λΌλ μμ²μ μλ² κ°λ°μμκ² ν λλ μλ€.
μμ°μ€λ¬μ΄ SRPλ₯Ό μν΄μ μ¬μ€μ κ°μ λλ λΆλΆμ΄κΈ°λ νλ€.
Atomic Design
μ°λ¦¬κ° μ μκ³ μλ κ³μΈ΅μ ꡬ쑰λ₯Ό λͺκ°μ§ μΉ΄ν κ³ λ¦¬λ‘ λ¬Άμ λ°©λ² [μμΈν보기]
μ»΄ν¬λνΈκ° λ§μμ‘μλ κ³μΈ΅ ꡬ쑰λ₯Ό μ μ νκ² λ§λ€ μ μλ μν€ν μ²λ₯Ό μ 곡
μν λ―Ή λμμΈμμ μ μνλ κ°μ΄λλΌμΈμ λ± λ§μΆ° λμμΈμ νλΌλ κ²μ΄ μλλΌ, μν λ―Ή λμμΈμ κ°λ μ μ΄ν΄νκ³ κ·Έμ κΈ°λ°νμ¬ μμ μ μμ μ μ μ©νλΌλ μλ―Έμ΄λ€.
atoms, molecules, organisms, templates, pages λ± λͺ¨λ λ μ΄μ΄λ₯Ό μ¬μ©νμ§ μμλ λ¨
atoms, moleculesλ§ μ¬μ©νλκ³³λ λ§μ, κ·Έλ¬λ νλ‘μ νΈμ λ§μΆ° 컀μ€ν
pagesμ κ°κΉμμ§μλ‘ λΉμ¦λμ€ λ‘μ§μ λ€μ 첨κ°νκ² λλ ꡬ쑰
atomsλ μμν λ μ΄μμ κ΅¬μ‘°λ§ κ°μ§κ³ μλ€κ³ μκ°νλ©΄ λ¨
컀λ€λ κ·λͺ¨μ νλ‘μ νΈλ λμμΈ μμ€ν μ΄ λ³λλ‘ μκ³ , λμμΈ μμ€ν μ μ¬μ©ν λΉμ¦λμ€ λ μ΄μμμ μμ§μΌλ‘ atomsλ₯Ό μ¬μ©νκΈ°λ νλ€. moleculesλ topbarμ κ°μ λΉμ¦λμ€μ μ΅μ’ κ²°μ μ²΄κ° λκΈ°λν¨
κ³ λ―Όνλ©΄ μ’μ κ²λ€
ν΄λΉ μ»΄ν¬λνΈλ λΉμ¦λμ€μ κ°κΉμ΄μ§, κ³΅ν΅ μ»΄ν¬λνΈμ κ°κΉμ΄μ§
κ³΅ν΅ μ½λμ κ°κΉλ€λ©΄ κ³΅ν΅ λ μ΄μμμ μ μνκ³ , ν΄λΉ μ»΄ν¬λνΈμλ λ§ν¬μ λ‘μ§λ§μ κ°κ²νμ.
λΉμ¦λμ€λ₯Ό μ 곡νλ€λ©΄ λ‘μ§μ 컀μ€ν ν μΌλ‘ λΆλ¦¬
λ¨μν useStateλΌλ 컀μ€ν ν μΌλ‘ λ³λλ‘ κ΄λ¦¬νλκ² μ’λ€.
λΉμ¦λμ€ λ μ΄μμμ μΈμ λ μ§ λ³κ²½λ μ μμΌλ―λ‘ μν, λ‘μ§μ ν μΌλ‘ λΆλ¦¬
μ»΄ν¬λνΈμ κ³μΈ΅μ λ§λ€μ.
곡ν΅/λΉμ¦λμ€ λ±μ μ¬μ©λλ κ΄μ μ κ³μΈ΅, μ½λ λ 벨μμ λΆλ¦¬νκΈ° μν κ³μΈ΅μ νμ
Compound Pattern
μν λ―Ήν μν, λ μ΄μμμ μνΈ μ°Έμ‘°νλ atomicν νλ‘ νΈ νκ²½μμ μμ£Ό μ¬μ©λλ ν¨ν΄
μ¬λ¬ μ»΄ν¬λνΈλ€μ λͺ¨μ νλμ λμμΌλ‘ μ¬μ©νκΈ° μν¨
λμ ꡬνμ νμν μνλ±μ λ΄λΆ context λ±μΌλ‘ κ°μ§κ³ μκΈ°μ λ΄λΆ λμμ΄ λ€μ΄λμ§ μμ
λ΄λΆ λμμ΄ λ€μ΄λμ§ μκΈ°μ μ£Όμ λ±μ μμ‘΄νμ¬, μ¬μ© ννκ° νλλ‘ κ³ μ λλ λ¨μ μ‘΄μ¬
λμμΈ μμ€ν , νΉμ μ¬λ¬ μ°Έμ‘°νλ λ μ΄μμ μ¬λ‘μ μ ν©ν¨
ex: λ²νΌμ left, rightμ μΆκ°μ μΌλ‘ λ€μ΄κ° μ μλ λ μ΄μμμ΄ λ€μ΄κ°λ ν¨ν΄μ΄ μλ€λ©΄ leftSide, rightSIdeλ₯Ό μ»΄ν¬λνΈν νμ¬ μ°κ²°νμ¬ μ¬μ©νλ λ± μ€λ³΅ λ‘μ§μ λν΄ μΌμ΄ν μ μλ°.γ΄
Last updated