Preface
๐ ๊ฐ๋ฐ ๊ณต๋ถ 1๊ฐ์ ์ฐจ์ธ to-be ๊ฐ๋ฐ์์ ์์ต blog๐๏พ Aug 23 ~ 27, 2021
ํ์ฌ ์ํ
data๋ผ๋ ๊ฒ์ ๋ค๋ฃจ๊ฒ(?) ๋์๋ค.
์ ํ ์ ์์๊น...
โ afterthought
commerce ์ชฝ์ ๊ฐ๋ฐํ๋ ์ค๋ฌด์์๊ฒ ๋ค์ด๋ณด๋ ๋จ์ํ ์ ์ ์ธ data์ธ์ง ๋์ ์ธ data์ธ์ง์ ๋ฐ๋ผ์๊ฐ ์๋, ์์ ์ ์ธ ์ด์์ ๊ณ ๋ คํด์ data๋ฅผ BE๊ฐ ๊ด๋ฆฌํ ์ง, FE๊ฐ ๊ด๋ฆฌํ ์ง ์ ํด์ผ ํ๋ค๊ณ ํ๋ค. ๋น์ฅ์ FE๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ ํธํด ๋ณด์ด๊ณ ํฉ๋ฆฌ์ ์ธ ๊ฒ ๊ฐ์๋ ์๊ฐ๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ์ ์๋ฌด๋ฆฌ ๋จ์ํ data์ฌ๋ BE๋ก๋ถํฐ ๋ฐ๋ ๊ฒ ์์ ์ ์ผ ๋๊ฐ ๋ง๋ค๊ณ ํ๋ค. ๊ตฌ์ฒด์ ์ธ ์ฌํญ์ ์ค๋ฌด์ ์ ํด๋ด์ผ ์ ์ ์์ ๋ฏ ํ๋ค.
FE ๊ฐ๋ฐ ์ค UI ๊ตฌ์ฑ์ ํ์ํ data๊ฐ ํ์ํ๋ฐ, ์ ์ data๋ data๋ฅผ ์๋ฒ์์ ๊ฐ์ ธ์ค์ง ์๊ณ FE๋จ์์ ์ง์ ๊ตฌ์ฑํ๋ค. server์์ ๋ฐ์์ผ ํ๋ ๊ฐ์ด๋ผ๋ BE API๊ฐ ๋ฏธ์ฒ ์์ฑ๋์ง ์์์ ์ ์๋ค. ์ด ๋ server์์ ๋ฐ์ ๊ฐ์ ์์ํด์ mock data๋ฅผ ์ ์ํด UI ๊ฐ๋ฐ์ ์งํํ ์ ์๋ค.
Goals
- `Array.map()` ํจ์๋ฅผ ํตํ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ
- mock data๋ฅผ ๋ง๋ค์ด BE API ๋ฏธ์์ฑ ์ํ์์๋ ์ฐจ์ง์์ด ๊ฐ๋ฐ
- `componentDidMount` method์์ `fetch` ํจ์๋ก mock data ํธ์ถ
- ์์ data๋ฅผ `javascript` ๋ก ๋ง๋๋ ๊ฒฝ์ฐ์ mock data๋ฅผ `JSON`์ผ๋ก ๋ง๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌ๋ถ
React๋ก ์ฌ๊ณ ํ๊ธฐ
Constant Data
- ๋ณํ์ง ์๋ data, ์ ์ data
- UI ๊ตฌ์ฑ์ ํ์ํ์ง๋ง ๋์ ์ผ๋ก ๋ณํ์ง ์์์ BE API ๋ฑ์ ํตํด ๊ฐ์ ธ์ฌ ํ์๊ฐ ์๋ ์ ์ ์ธ data๋ฅผ ์์ data๋ก ๋ง๋ค์ด UI๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑ
Why?
- ๋ฐ๋ณต๋๋ UI๋ฅผ hard coding์ผ๋ก ์ผ์ผ์ด ๋ง๋ค๋๋ฉด, code๊ฐ ๊ธธ์ด์ ธ์ ๊ฐ๋
์ฑ์ ์ข์ง ์๊ณ , ์์ ์ด ํ์ํ ๋ ํด๋นํ๋ ๋ถ๋ถ์ ์ฐพ๊ธฐ ํ๋ค์ด ์ ์งใป๋ณด์๊ฐ ํ๋ค์ด์ง ์ ์์
- ์ด๋ฐ ๋ฐ๋ณต๋๋ UI๋ฅผ ์์ data +
Array.map()
ํจ์์ ์กฐํฉ์ ์ด์ฉํด์ ๊ฐ๊ฒฐํ๊ฒ ํํ
- ์ถํ, ์์ ํด์ผ ํ ๋ ์์ data์์ ํด๋นํ๋ ๋ถ๋ถ์ ๋ด์ฉ๋ง ๋ณ๊ฒฝ
How?
- ์์ ๋ฐ์ดํฐ๋ ๋ณ๋์ JS ํ์ผ๋ก ๋ถ๋ฆฌํ๊ฑฐ๋, ํ์ํ ํ์ผ ๋ด๋ถ์์ ์ ์ธํด์ ์ฌ์ฉ (๋จ, ๋ด๋ถ์์ ์ ์ธํ ๋ component ๋ค์์ ์ ์ธ
๋๋ฌธ์ + snake case
๋ฅผ ์ด์ฉํด์ ๋ณ์์ ์ด๋ฆ์ ์ง๋ ๊ฒ convention
- ๋ณ๋์ JSํ์ผ๋ก ๋ถ๋ฆฌํ ๊ฒฝ์ฐ
export / import
๋ฅผ ํตํด์ ํ์ํ ํ์ผ์์ ์ฌ์ฉ
- JSํ์ผ์ data๋ฅผ
import
ํ๋ component ๋ฐ๋ก ์์ผ๋ก ์ ๊ทผํ๊ธฐ ์ฌ์ด ๊ณณ์ ์์ฑ
Mock Data
- ๊ฐ์ง data, ์ํ data
- ์ค์ API ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๊ฐ ์๋ FE ๊ฐ๋ฐ์๊ฐ ํ์์ ์ํด ์ํ๋ก ๋ง๋ค์ด ๋ณธ ๋ฐ์ดํฐ
Why?
- BE API ์์ฑ ์ ์ data๋ฅผ ํธ์ถํ๋ ์ํฉ์ ๋๋น
- data์ ๋ง๊ฒ UI๊ฐ ์๋ํ ๋๋ก ๊ตฌํ๋๋์ง ์ฌ์ ํ์ธ
โป BE API๊ฐ ๋ณด๋ด๋ response์ ํํ, key value ๊ฐ ์ฌ์ ํ์ธ ํ์, ์๋ฎฌ๋ ์ด์
์ ํตํ ์ต์ ํ
How?
- ๋์ data๋ฅผ state๋ก ๊ด๋ฆฌํ๋ฉด์ state ๋ณํ๋ฅผ ํตํด UI๋ ๋ณํ
- http ํต์ ์ ์ด์ฉํด BE API๋ฅผ ์์ฒญ, ์๋ต์ ๊ฐ์ ธ์ค๊ณ ๊ทธ ์๋ต์ ๋๊ธ state์ ์ด๊ธฐ ๊ฐ์ผ๋ก ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ง์
ํ ๋ ์ต์ ์ ๋๊ธ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ UI์ ๋
ธ์ถ
- BE API๊ฐ ์ค๋น๋๊ธฐ ์ ์ด๋ผ๋ฉด mock data๋ฅผ ๋ง๋ค์ด BE API๋ฅผ ๋ชจ๋ฐฉ
- mock data๋ BE API๋ฅผ ๋ชจ๋ฐฉํ๊ธฐ ๋๋ฌธ์ ์ค์ BE API ์๋ต ๊ฐ์ ํํ์ธ json file๋ก ๋ง๋ค์ด์ผ ํจ