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 ์ค์ฌ
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๋ฅผ ์ค์ํ๊ณ ์๋์ง ์ ๊ฒํด๋ณด์~
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