๋๋ฃํ์ต์ ํตํด์ ํ์์ ์๊ฐํ [์ฐจํธ๋ง๋ค๊ธฐ] ์ Best Pratice ๋ง๋ค๊ธฐ
Best Practice๋ ๋ชจ๋ฒ์ฌ๋ก๋ผ๋ ๋ง๋ก์, ํน์ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ์ฅ ์ฑ๊ณต์ ์ธ ํด๊ฒฐ์ฑ ๋๋ ๋ฐฉ๋ฒ๋ก ์ ์๋ฏธํฉ๋๋ค.
์ก๊ฒฝํ(ํ์ฅ) |
๋ฐ์ธํ |
๊น์ฐ์ฑ |
๋ณ์ฐฌ์ฐ |
์กฐํ๋ฏผ |
์ดํ์ฑ |
๊น์ฑ๋น |
# ํ๋ก์ ํธ ํด๋ก
git clone "https://github.com/wanted-pre-onboarding-fe-team-4/pre-onboarding-9th-3-4.git"
# ํ๋ก์ ํธ ํด๋ ์ง์
cd pre-onboarding-9th-3-4
# ๋ชจ๋ ์ค์น ๋ฐ ์คํ
yarn && yarn dev-.mov
-.mov
- ์๊ณ์ด ์ฐจํธ ๋ง๋ค๊ธฐ
- ์ฃผ์ด์ง JSON ๋ฐ์ดํฐ์
key๊ฐ(์๊ฐ)์ ๊ธฐ๋ฐ์ผ๋ก ์๊ณ์ด ์ฐจํธ๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์ - ํ๋์ ์ฐจํธ์์ Area ํํ์ ๊ทธ๋ํ์ Bar ํํ์ ๊ทธ๋ํ๊ฐ ๋ชจ๋ ์กด์ฌํ๋ ๋ณตํฉ ๊ทธ๋ํ๋ก ๋ง๋ค์ด์ฃผ์ธ์
- Area ๊ทธ๋ํ์ ๊ธฐ์ค๊ฐ์
value_area๊ฐ์ ์ด์ฉํด์ฃผ์ธ์ - Bar ๊ทธ๋ํ์ ๊ธฐ์ค๊ฐ์
value_bar๊ฐ์ ์ด์ฉํด์ฃผ์ธ์ - ์ฐจํธ์ Y์ถ์ ๋๋ต์ ์ธ ์์น๋ฅผ ํํํด์ฃผ์ธ์
- ์ฃผ์ด์ง JSON ๋ฐ์ดํฐ์
- ํธ๋ฒ ๊ธฐ๋ฅ ๊ตฌํ
- ํน์ ๋ฐ์ดํฐ ๊ตฌ์ญ์ ๋ง์ฐ์ค ํธ๋ฒ์
id, value_area, value_bar๋ฐ์ดํฐ๋ฅผ ํดํ ํํ๋ก ์ ๊ณตํด์ฃผ์ธ์
- ํน์ ๋ฐ์ดํฐ ๊ตฌ์ญ์ ๋ง์ฐ์ค ํธ๋ฒ์
- ํํฐ๋ง ๊ธฐ๋ฅ ๊ตฌํ
- ํํฐ๋ง ๊ธฐ๋ฅ์ ๊ตฌํํด์ฃผ์ธ์, ํํฐ๋ง์ ํน์ ๋ฐ์ดํฐ๋ฅผ ํ์ด๋ผ์ดํธ ํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํด์ฃผ์ธ์
- ํํฐ๋ง ๊ธฐ๋ฅ์ ๋ฒํผ ํํ๋ก ID๊ฐ(์ง์ญ์ด๋ฆ)์ ์ด์ฉํด์ฃผ์ธ์
- ํํฐ๋ง ์ ๋ฒํผ์์ ์ ํํ ID๊ฐ๊ณผ ๋์ผํ ID๊ฐ์ ๊ฐ์ง ๋ฐ์ดํฐ ๊ตฌ์ญ๋ง ํ์ด๋ผ์ดํธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ธ์
- ํน์ ๋ฐ์ดํฐ ๊ตฌ์ญ์ ํด๋ฆญ ์์๋ ํํฐ๋ง ๊ธฐ๋ฅ๊ณผ ๋์ผํ ํํ๋ก ๋์ผํ ID๊ฐ์ ๊ฐ์ง ๋ฐ์ดํฐ ๊ตฌ์ญ์ ํ์ด๋ผ์ดํธํด์ฃผ์ธ์
๐ฆ src
โโโ ๐ App.tsx
โโโ ๐ main.tsx
โโโ ๐ api
โ โโโ ๐ getData.ts
โโโ ๐ components
โ โโโ ๐ Chart
โ โ โโโ ๐ index.tsx
โ โ โโโ ๐ style.tsx
โ โ โโโ ๐ tooltip.tsx
โ โโโ ๐ Filter
โ โโโ ๐ index.tsx
โ โโโ ๐ type.ts
โโโ ๐ config
โ โโโ ๐ ChartStyleConfig.ts
โโโ ๐ types
โโโ ๐ util
โโโ ๐ suspendable.ts
๊ฐ์์ ๊ตฌํ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๊ณ ํ ๋ก ํ์ ๋ ํ ์์์ ์ด ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๊ณ ํ๋จ๋๋ ๊ฒ์ ์ ํ๊ณ ๊ทธ๊ฒ์ ํ์ Best Practice ๋ก ์ฑํํด์ ํ๋ก์ ํธ์ ๋
น์์ต๋๋ค.
์ด๋ฒ ๊ณผ์ ์์๋ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ ์ด ๊ฐ์ฅ ์ค์ํ๋ค ์๊ฐํด์ ๊ตฌ์ฑ์ ์ ๋ถ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ํด ๊ฐ์ธ๊ตฌํ ํด๋ณธ ๋ค ๋ค๊ฐ์ง ๊ธฐ์ค์ ๋ฐ๋ผ ํ๋๋ฅผ ์ ์ ํ์์ต๋๋ค. Recahrts ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ์ ํ์๋๋ฐ ๊ทธ ์ด์ ๋ ์๊ตฌ์ฌํญ์ ๋ชจ๋ ๊ตฌํํ ์ ์์๊ณ , ๋ฒ๋คํฌ๊ธฐ๊ฐ ํฌ์ง ์์์ ์ ์ ํ๊ฒ ๋์์ต๋๋ค.
| ๊ตฌํ ์์ ๋ | ์๊ตฌ์ฌํญ ์ ํฉ์ฑ | API ๋ฌธ์ | ๋ฒ๋คํฌ๊ธฐ | |
|---|---|---|---|---|
| Recharts | ํ๊ณ ์ถ์ ๊ตฌํ ๋๋ถ๋ถ ๊ฐ๋ฅ | ์๊ตฌ์ฌํญ ๋ชจ๋ ๊ตฌํ ๊ฐ๋ฅ | ์น์ ํํธ์ ์๋์ด์ ๊ตฌ๊ธ๋ง์ ํด์ผํ๋ค. | 488.18KB |
| chartJS | ์์คํ ์ค ์ค, ๋ํ์ ์ผ๋ก๋ ๋ฉํฐ y์ถ ์๋จ | ์ฝ๋๊ฐ ๊น๋ํ๊ณ ์ข์์ง๋ง ์๊ตฌ์ฌํญ์ ์ค ์ ๋ | api๋ฌธ์๋ณด๋ค ์คํ์ค๋ฒํ๋ก์ฐ๊ฐ ์คํ๋ ค ์๋์ด์์๋ค. ์๋ฌ๋ ์คํ์ค๋ฒํ๋ก์ฐ์์ ์ฐพ์๋ค. | 388.544KB |
| styled-chart | ๊ฑฐ์ ์๋ ์์ค, ๋ผ์ธ์ด๋ ๋ฐ ์ค ํ๋๋ง ์ ํํ ์ ์๋ค. y์ถ ์ถ๊ฐ ์๋๊ณ โฆ | ์๊ตฌ์ฌํญ ์ค 3๋ฒ์ธ ํํฐ, ํ์ด๋ผ์ดํธ ๊ธฐ๋ฅ์ด ์๋๋ค. ๋ณตํฉ์ฐจํธ ๊ตฌํ ์๋จ | readme ๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์, ๋์์ด ๋์ง์์๊ณ ์น์ ์ ๋ณด๋ ๋ถ์กฑํ๋ค | 31.28KB |
| apex | ์ปค์คํฐ๋ง์ด์ง์ ์ ๋จ, ํ์ง๋ง ๋ฐ๋๋ผJS ์นํ์ ์ด๋ผ ๋ฆฌ์กํธ์์๋ ์ ํฉํ์ง ์๋ค | ๊ฐ๋ฅ์ ํ๋ ์ฝ๋๊ฐ ๋ณต์กํด์ง๊ณ ์ด๋ ต๋ค. | ์ฐธ๊ณ ํ ์ ์๋๊ฒ ๋ง์ง์๊ณ ์น์์์ ์์๋ฅผ ์ฐพ์ ๋ด์ผํ๋ค. | 492.36KB |
| echart | ํ๊ณ ์ถ์ ๊ตฌํ ๋๋ถ๋ถ ๊ฐ๋ฅ, ํ์ง๋ง ๋ฐ๋๋ผ JS์ ์นํ์ ์ด์๋ค. | ์๊ตฌ์ฌํญ ๋ชจ๋ ๊ตฌํ ๊ฐ๋ฅ | ์ ๋ฆฌ๊ฐ ์ ๋์ด์์๋ค | 2.28MB |
๋ณธ ๊ณผ์ ์์ ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ์ ํฉํ UI ๋ฅผ ๊ณ ๋ฏผํด ๋ณด์์ ๋ ์๋์ ๊ฐ์ด ์ ์ ํ์์ต๋๋ค.
๋ ์์ผ ๋ถ๋ฆฌ
- ๋ ์์ผ ๊น์ง X์ถ ๋ ์ด๋ธ๋ก ๋ค์ด๊ฐ๋ฉด ๊ฐ๋ ์ฑ์ด ๋จ์ด์ ธ ๊ณตํต์ธ ๋ ์์ผ์ ๋ถ๋ฆฌํ์ฌ ๋ฐฐ์นํ์ต๋๋ค.
ํ ๊ธ ํํฐ
- ์ฌ์ฉ์๊ฐ ๊ฐ๋จํ ๋ฐฉ์์ผ๋ก ํด๋น Id์ ์ฐจํธ๋ฅผ ๋ณผ ์ ์๋๋ก ํ ๊ธ ๋ฒํผ์ ์ ์ฉํ์์ต๋๋ค.
์ฐจํธ ๋์ด ์กฐ์
- ๋ณตํฉ์ฐจํธ์ ํน์ฑ ์ ์ฐจํธ๊ฐ ๊ฒน์น๋ฉด ๊ฐ๋ ์ฑ์ด ๋งค์ฐ ๋จ์ด์ ธ area ์ฐจํธ์ y์ถ ๋ฒ์๋ฅผ ๋๊ฒ ์ก์ ๋ ์ฐจํธ์ ๊ณ ์ ์ฐจ์ด๋ฅผ ์ฃผ์์ต๋๋ค.
- ์ฐจํธ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ดํ์์ผ๋ก ๋ฃ์ด์ค์ผ ํ๊ธฐ๋๋ฌธ์ ํค-๋ฐธ๋ฅ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ์ ์ ํด์ฃผ์์ต๋๋ค.
- ๋ ์ง์ธ ํค๊ฐ๋ ๋ฐ์ดํฐ์ ํ์ํด์ ํค๊ฐ ์ฝ์ ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ฃผ์์ต๋๋ค.
Object.entries๋ฅผ ์ด์ฉํด ์ ์ ์์ ์ฝ๋๋ก ์ ์ ํด์ฃผ์์ต๋๋ค.
...
const getData = async () => {
try {
const response = await axios.get('/mock_data.json');
const data: IChartObj = response.data.response;
return Object.entries(data).map(([key, value]) => ({
date: key.split(' ')[1],
...value,
}));
} catch (error) {
console.log(error);
throw error;
}
};
export default getData;-.mov
์ง๋ 2์ฃผ๋์ ์ ํฌ ํ์ด ์ ๊ทน์ ์ธ ์ฝ๋๋ฆฌ๋ทฐ๊ฐ ๋ถ์กฑํ๋ ์ ์ด ์์ด์ PR ์ฌ๋ฆฐ ํ 30๋ถ ์ด๋ด๋ก ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ํ๋ช ์ด์์ ์น์ธ์ ๋ฐ์์ผ ๋จธ์งํ๋๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
๋๋ถ์ ์ข๋ ํ๋ฐํ ์ฝ๋๋ฆฌ๋ทฐ๊ฐ ์ด๋ฃจ์ด์ก์ต๋๋ค.
๊ธฐ์กด์ ์ง์ผฐ๋ ๊ท์น๋ ๊พธ์คํ ์งํํ์์ต๋๋ค.
- Issue ์์ฑ
- Branch, commit ์ปจ๋ฒค์
- PR์ issue ์ฐ๊ณ
| Type | Description |
|---|---|
| test | ๋๋ฝ๋ ํ ์คํธ ์ถ๊ฐ |
| feat | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
| fix | ๋ฒ๊ทธ ์์ |
| chore | ๋น๋ ํ๋ก์ธ์ค๋ ๋ณด์กฐ ๋๊ตฌ ๋ณ๊ฒฝ |
| docs | ๋ฌธ์ ๋ณ๊ฒฝ |
| refactor | ๋ฒ๊ทธ ์์ ๋, ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ๋ ์๋ ์ฝ๋ ๋ณ๊ฒฝ |
| style | ๋งํฌ์ , ๊ณต๋ฐฑ, ํฌ๋งท, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ ๋ฑ ์คํ์ผ ๋ณ๊ฒฝ |
| ci | CI ๊ด๋ จ ๋ณ๊ฒฝ |
| perf | ์ฑ๋ฅ ๊ฐ์ |
| ๋ธ๋์น ์ด๋ฆ | ์ค๋ช |
|---|---|
| master | ์ ํ์ผ๋ก ์ถ์ ๊ฐ๋ฅํ ๋ธ๋์น |
| feature/๊ฐ๋ฐํ ๋ด์ฉ | ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ๋ ๋ธ๋์น |
| fix/์์ ํ ๋ด์ฉ | ์ถ์ ๋ฒ์ ์์ ๋ฐ์ํ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋ ๋ธ๋์น |
