๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’๊ณต๋ถ€/ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ์ฝ”์Šค

[ํ”„๋ฆฌ์˜จ๋ณด๋”ฉ์ฝ”์Šค] 1์ฃผ์ฐจ -๊ณผ์ œ2

by rindev 2021. 8. 1.

โœ์•Œ๊ฒŒ๋œ ๊ฒƒ๋“ค

 

๐Ÿ”ฅ๊ทธ๋ž˜์„œ ํ•ด๋ณด๋Š” ์ •๋ฆฌ

1. API๊ฐ€ ํ•ญ์ƒ ์ฃผ์–ด์งˆ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ง๊ธฐ

UI ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ๋ฐฑ์—”๋“œ API๊ฐ€ ์ค€๋น„๋˜์ง€ ์•Š์•˜์„ ๋•Œ, ์ƒ˜ํ”Œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ (mock data)

public/data ํด๋” ์•ˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋‹ˆ๋ฉด ์‚ฌ์šฉํ•˜๋Š” component ํŒŒ์ผ๊ณผ ๊ฐ™์€ level์— ์œ„์น˜ ์‹œํ‚จ ํ›„ import ํ•ด๋„ ๋จ

๐Ÿ’ก์ž ๊น! JSON์€?
    JSON (JavaScript Object Notation) : ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ˜•์‹
    String์„ ๊ฐ์Œ€ ๋•Œ "" ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

 

 

2. ๊นƒ ๋ธŒ๋žœ์น˜์˜ ํšจ๊ณผ์ ์ธ ์‚ฌ์šฉ๋ฒ•! (master์—์„œ ํƒˆ์ถœํ•˜๊ธฐ)

๊ธฐ๋Šฅ๋ณ„(ํŽ˜์ด์ง€๋ณ„)๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์ž‘์—… ํ›„, sprint๋ผ๋Š” ์ค‘๊ฐ„๊ด€๋ฆฌ์ž ๊ฐ™์€ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด์„œ merge ํ•˜๊ณ  conflict๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.

์ด ๋ชจ๋“ ๊ฒŒ ํ•ด๊ฒฐ ๋œ ํ›„ master์—๋Š” ๊ธˆ์ด์•ผ์˜ฅ์ด์•ผ ํ‚ค์šด ๋ฉ€์ฉกํ•œ ์ฝ”๋“œ๋“ค๋งŒ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

2-1. commit message

feat : ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
fix : ๋ฒ„๊ทธ ์ˆ˜์ •
docs : ๋ฌธ์„œ ์ˆ˜์ •
style : ์ฝ”๋“œ ํฌ๋งทํŒ…, ์„ธ๋ฏธ์ฝœ๋ก  ๋ˆ„๋ฝ, ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์—†๋Š” ๊ฒฝ์šฐ
refactor : ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
test : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ๋ฆฌํŒฉํ† ๋ง ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถ”๊ฐ€
chore : ๋นŒ๋“œ ์—…๋ฌด ์ˆ˜์ •, ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์ˆ˜์ •

 

 

3. ๋ฆฌ์•กํŠธ๋Š” FontAwesomeIcon์„ import ํ•ด์•ผ ํ•ด (feat. npm install์˜ ํ•จ์ •)

ํฐํŠธ์–ด์ธ ์—†์œผ๋ฉด ํฐ์ผ๋‚˜๋Š”์‚ฌ๋žŒ ์—ฌ๊ธฐ๐Ÿ™‹‍โ™€๏ธ

npm install์—์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์‚ฌ์‹ค์€ @fortawesome ์ด๋ผ๋Š” ์‚ฌ์‹ค์ด๋‹ค. (font๊ฐ€ ์•„๋‹ˆ๋‹ค!!!)

import ReactDOM from 'react-dom'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faCoffee } from '@fortawesome/free-solid-svg-icons'

const element = <FontAwesomeIcon icon={faCoffee} />

ReactDOM.render(element, document.body)

import ๋ฐ ์‚ฌ์šฉ์€ ์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค.

 

 

4. ํšจ์œจ์ ์ธ ์ƒ์ˆ˜ ๊ด€๋ฆฌ๋ฒ•

src/constant.js ๋ฅผ ์ƒ์„ฑ, ์—ฌ๊ธฐ์—์„œ ์ƒ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ–ˆ๋‹ค.

์ปดํฌ๋„ŒํŠธ์—์„œ import ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

import { PRODUCT_LIST } from 'constant'

 

 

5. ์–ด๋ฆด์ ๋ถ€ํ„ฐ ๋‚œ ๋ ˆ๊ณ ๋ฅผ ๋ชปํ–ˆ์–ด

๋ฆฌ์•กํŠธ... ์ชผ๊ฐœ๋Š”๊ฒŒ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค. jspํ•  ๋•Œ๋„ ํ—ค๋” ํ‘ธํ„ฐ๋Š” ๋‚˜๋ˆด๋Š”๋ฐ (์ด๊ฒŒ ๋น„๊ต ๋Œ€์ƒ์ด ๋˜๊ธฐ๋Š” ํ•˜๋‚˜ใ…‹ใ…‹ใ…‹ใ…‹) ๋ฆฌ์•กํŠธ๋Š” ๋Œ€์ฒด ์–ด๋””๊นŒ์ง€ ์ชผ๊ฐœ์ง€๋Š”๊ฐ€? ์กฐ๊ฐ์กฐ๊ฐ ๋•ƒ๋”ฐ๋”ฐ ๋…ธ๋ž˜๋งŒ ๋ฐฑ๋ฒˆ์€ ๋ถ€๋ฅธ ๊ฒƒ ๊ฐ™์€๋ฐ ์•„์ง๋„ ์–ด๋ ต๋‹คใ…œใ…œ

 

- UI๋ฅผ ์ปดํฌ๋„ŒํŠธ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋‚˜๋ˆ„๊ธฐ

- ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ (ํ•œ ๊ฐ€์ง€์˜ ์ž‘์—…๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ) ๊ธฐ์–ตํ•˜๊ธฐ

 

 

6. ์•„์ง์€ ์–ด๋ ค์šด styled-components

styled-components๋Š” JS์—์„œ CSS๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์Šคํƒ€์ผ๋ง ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

 

๋‹ค์Œ์— ์‚ฌ์šฉํ•ด๋ณผ ๊ฒƒ

- ํ™•์žฅ ์Šคํƒ€์ผ๋ง : ๊ธฐ์กด์˜ ์ปดํฌ๋„ŒํŠธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ์— ์ข‹์€ ๋“ฏ

 

 

7. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ ๋„ˆ์–ด๋Š” ์ •๋ง

์‚ฌ์‹ค ํ•จ์ˆ˜ํ˜•์ด๊ณ  ํด๋ž˜์Šคํ˜•์ด๊ณ  ๋”ฐ์ง€๊ธฐ ์ „์— ๊ทธ๋ƒฅ ๋ฆฌ์•กํŠธ๊ฐ€ ์•„์ง ๋‚ฏ์„ค์–ด์„œ..^^ ์šฐ๋ฆฌ์•„์ง ์•ˆ ์นœํ•œ๊ฐ€๋ด

 

ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ

- ํ•จ์ˆ˜์˜ ๋ฌธ๋ฒ•๋งŒ ์•Œ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜

- ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ–ˆ์Œ (state, life cycle API ์‚ฌ์šฉ ๋ถˆ๊ฐ€์˜€์Œ)

- ํ•˜์ง€๋งŒ ์ตœ์‹  ๋ฆฌ์•กํŠธ์—๋Š” hook์ด ์ƒ๊ฒจ์„œ ์œ„์˜ ๊ธฐ๋Šฅ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ

 

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ

- ์กฐ๊ธˆ ์žฅํ™ฉํ•˜๊ณ  ๋ฌธ๋ฒ•์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์ข€ ํ•„์š”ํ•˜์ง€๋งŒ

- ์›๋ž˜๋ถ€ํ„ฐ ๊ธฐ๋Šฅ์ด ํ›Œ๋ฅญํ–ˆ๊ณ 

- ์ผ๋‹จ ์ฃผ์š” ๋ฌธ์„œ๋“ค์ด classํ˜•์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด ๋งŽ์Œ (์ฐธ๊ณ ์ž๋ฃŒ๋“ค์ด)

 

์„œ๋กœ๋ฅผ ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ 2๊ฐœ ๋‹ค ์•Œ์•„์•ผ ํ•œ๋‹ค! 

 

 

๐Ÿš€๊ณผ์ œ ํ›„๊ธฐ

wow.. ๊ฐ‘์ž๊ธฐ ๋ฏธ์นœ๋‚œ์ด๋„๊ฐ€ ๋๋Š”๋ฐ ์šฐ๋ฆฌ ์กฐ ์ง„์‹ฌ ๋‹ค ๊ธˆ๋ฉ”๋‹ฌ๋ฆฌ์ŠคํŠธ๋งŒ ๋ชจ์—ฌ์žˆ์–ด์„œ ๋˜ ๋‚˜๋งŒ ์–ผ๋ ˆ๋ฒŒ๋ ˆ์–ผ๋ ๋šฑ๋•… ์ฝ”๋”ฉํ•œ ๊ธฐ๋ถ„์ด ๋“ค์—ˆ๋‹คใ…œใ…œ ํ•˜์ง€๋งŒ ๋‹ค์‹œํ•œ๋ฒˆ.. ๋ฉ˜ํ† ๋‹˜์˜ ๋ง์”€์„ ๋งˆ์Œ์— ์ƒˆ๊ฒจ์•ผ์ง€... ์•ˆ๋˜๋Š” ๊ฐœ๋ฐœ์€ ์—†๊ณ  ์‹ค๋ ฅ์€ ์‚ฝ์งˆ๊ณผ ๊ณ ํ†ต์œผ๋กœ๋ถ€ํ„ฐ....๐Ÿ˜ญ ์ด ๊ณ ํ†ต์ด ์–ผ๋ฅธ ์ง€๋‚˜๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”

 

๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ์— ๊นƒ ๋ธŒ๋žœ์น˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ๋งŽ์ด ๊นจ์ง„(ใ… ใ… ) ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค! (Special thanks to RE4CTํŒ€์›๋‹˜๋“ค๐Ÿ’•)

์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€๋„ ์กฐ๊ธˆ ๋” ๋””ํ…Œ์ผํ•˜๊ฒŒ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์—ˆ๊ณ  (์•ž์œผ๋กœ๋„ ์ž˜ ์ง€ํ‚ค์ž!) ์•„ ๊ทผ๋ฐ styled component๋ฅผ ์“ฐ๋‹ค๋ณด๋‹ˆ ์ €๋ฒˆ์— ์ง๋‹˜ํ•œํ…Œ ํ”ผ๋“œ๋ฐฑ ๋ฐ›์•˜๋˜๊ฑฐ (div์‚ฌ๋ž‘ ๋ฉˆ์ถฐ) ๊ทธ๊ฒŒ ์ข€ ์ž˜ ์•ˆ ๋œ๊ฑฐ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ ... ํ•˜๋‚˜๋ฅผ ๋ฐฐ์šฐ๋ฉด ํ•˜๋‚˜๋ฅผ ๋ชป์จ๋จน๋Š” ์‚ฌ๋žŒ์ด ๋๋„ค....

์•ฝ๊ฐ„ ์ง€์‹์ด ์ฝ”์Šค์š”๋ฆฌ์ฒ˜๋Ÿผ ๋Š์ž„์—†์ด ์ž…์œผ๋กœ ๋“ค์–ด์˜ค๋Š”๋ฐ ์œ„์—ผ ๊ฑธ๋ฆฐ ๊ธฐ๋ถ„.... ์†Œํ™”ํ•ด๋‚ด๋ผ ๋‚ด ์œ„์žฅ ํˆ์ดํ†™~!!

 

๊ทธ๋ฆฌ๊ณ  ๊ฑด๊ฐ•์ด ์ œ์ผ์ด๋‹ค.. ๋‚˜์ง„์งœ ์šด๋™ํ•œ๋‹ค.. ์•ˆํ•˜๋ฉด ์ด๋Œ€๋กœ ์‘๊ธ‰์‹คํ–‰์˜ˆ์ •

 

๐Ÿ’–๋งˆ๋ฌด๋ฆฌํ•˜๋ฉฐ...

I LOVE WECODE WANTED ROOT_IMPACT

 

 

๐Ÿ‘€lovely references

๋”๋ณด๊ธฐ

https://fontawesome.com/v5.15/how-to-use/on-the-web/using-with/react

 

Font Awesome

The world’s most popular and easiest to use icon set just got an upgrade. More icons. More styles. More Options.

fontawesome.com

https://opentutorials.org/module/4058

 

React

์ˆ˜์—…์†Œ๊ฐœ ๋ฆฌ์•กํŠธ ์ž…๋ฌธ ์ˆ˜์—…์ž…๋‹ˆ๋‹ค. ์ด ์ˆ˜์—…์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.  ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ• ๋ฆฌ์•กํŠธ์™€ ๋ถˆ๋ณ€(immutable)์˜ ๊ด€๊ณ„ ์•„๋ž˜ ๋‚ด์šฉ์€

opentutorials.org

https://ko.reactjs.org/docs/thinking-in-react.html

 

React๋กœ ์‚ฌ๊ณ ํ•˜๊ธฐ – React

A JavaScript library for building user interfaces

ko.reactjs.org

https://ui.toast.com/weekly-pick/ko_20200213

 

๋ฆฌ์•กํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ - ์•„ํ† ๋ฏน ๋””์ž์ธ | TOAST UI :: Make Your Web Delicious!

๋ฆฌ์•กํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ - ์•„ํ† ๋ฏน ๋””์ž์ธ ์›๋ฌธ: https://andela.com/insights/structuring-your-react-application-atomic-design-principles/ ํ•„์ž๋Š” ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ, ๋””์ž์ธ ํŒจํ„ด, ํŒŒ์ผ๊ตฌ์กฐ์™€ ๊ฐ™์€ ์ถ”์ƒ

ui.toast.com

https://opentutorials.org/module/4600

 

React class & function style coding

React์—์„œ ์ฝคํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์Šคํƒ€์ผ๊ณผ ํ•จ์ˆ˜ ์Šคํƒ€์ผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์Šคํƒ€์ผ์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์Šคํƒ€์ผ์€ ์ œํ•œ๋œ

opentutorials.org

 

 

๋Œ“๊ธ€