๐Ÿ“˜ Constant Data, Mock Data

[meษช]ยท2021๋…„ 8์›” 23์ผ
0

3. Today I Learned. Basic

๋ชฉ๋ก ๋ณด๊ธฐ
4/11

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

  1. `Array.map()` ํ•จ์ˆ˜๋ฅผ ํ†ตํ•œ ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ
  2. mock data๋ฅผ ๋งŒ๋“ค์–ด BE API ๋ฏธ์™„์„ฑ ์ƒํƒœ์—์„œ๋„ ์ฐจ์งˆ์—†์ด ๊ฐœ๋ฐœ
  3. `componentDidMount` method์—์„œ `fetch` ํ•จ์ˆ˜๋กœ mock data ํ˜ธ์ถœ
  4. ์ƒ์ˆ˜ 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๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•จ
profile
๋Š๋ ค๋„ ํ•  ๊ฑฐ์•ผ.......

0๊ฐœ์˜ ๋Œ“๊ธ€