์ถ์ต์ ๋กค๋ง ํ์ดํผ๋ฅผ ์น ์์์๋ ์ฆ๊ฒจ๋ณด์ธ์ !
๋ค๋ฅธ ์ฌ๋๋ค์ ๋กค๋งํ์ดํผ์ ๋ฉ์์ง์ ์ด๋ชจํฐ์ฝ ๋ฆฌ์ก์
์ ๋จ๊ธธ ์ ์๊ณ ,
์๊ธฐ๋ง์ ๋กค๋งํ์ดํผ๋ฅผ ๋ง๋ค์ด ๋ค๋ฅธ์ฌ๋์๊ฒ ๊ณต์ ํ ์ ์๋ ์๋น์ค
- ์์ค ํ์ผ ์ค์น
git clone https://github.com/Dev-Duke-Seo/rolling_team1.git
cd rolling_team1
- ํจํค์ง ์ค์น
npm install
.env
ํ์ผ ์์ฑ
REACT_APP_BASE_URL = 'BASE_URL'
REACT_APP_API_KEY = 'KAKAO_API_KEY'
- ์คํ
npm run start
์ด์ ์ฐ | ๊น์ ์ | ๊น์จ๋ฏผ | ์์ธ๋ | ์ด์ฌ๋ช |
ํ์ฅ | ํ์ | ํ์ | ํ์ | ํ์ |
2024.01.17 ~ 2024.02.01 (2์ฃผ)
src
โโโ assets
โ โโ fonts
โ โโ images
โโโ apis
โโโ components
โ โโ Post
โ โโโ Card.jsx
โ โโโ Card.style.js
โ โโ List
โโโ contexts
โโโ constants
โโโ pages
โโโ utils
โโโ hooks
โโโ router
โโโ App.jsx
โโโ GlobalStyle.css
โโโ index.jsx
- ํ๋ซํผ์ ๋ํ ๊ฐ๋จํ ์ค๋ช ๊ณผ ํ์ด์ง ์ด๋ ๋ฒํผ
- ์ด๋ฆ๊ณผ ๋ฐฐ๊ฒฝ์์ or ์ด๋ฏธ์ง๋ฅผ ๊ณจ๋ผ ํ์ดํผ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ
- ์ด๋ชจํฐ์ฝ ๋ฆฌ์ก์ , ์ต์ ์์ผ๋ก ์ ๋ ฌ๋ ์บ๋ฌ์ UI์ ๋กค๋งํ์ดํผ ๋ฆฌ์คํธ
- ํ๋ ํด๋ฆญ ์ ํด๋นํ๋ ์ฌ์ฉ์์ ๋กค๋งํ์ดํผ๋ก ์ด๋
- ์ด๋ชจ์ง ๋ฆฌ์ก์ ์ ๋จ๊ธธ ์ ์๋ ๊ธฐ๋ฅ
- ์ด ๋กค๋งํ์ดํผ๋ฅผ ๊ณต์ ํ ์ ์๋ ๊ธฐ๋ฅ
- ๋กค๋งํ์ดํผ์ ๋จ๊ฒจ์ง ๋ฉ์์ง๋ค์ ๋ฌดํ ์คํฌ๋กค ๋ฐฉ์์ผ๋ก ๋ณผ ์ ์๋ ๊ธฐ๋ฅ
- ๋ฉ์์ง ์นด๋๋ ํด๋ฆญ ์ ๋ชจ๋ฌ๋ก ์์ธํ ๋ณผ ์ ์๋ ๊ธฐ๋ฅ
- ํธ์ง๋ฒํผ์ ๋๋ฌ ๋ฉ์์ง ์นด๋ ์ญ์ ๊ธฐ๋ฅ ํ์ฑํ
- ํ๋ฌ์ค ๋ฒํผ์ ๋๋ฌ์ ๋กค๋งํ์ดํผ ์ฃผ์ธ์๊ฒ ๋ฉ์์ง ๋จ๊ธฐ๊ธฐ ๊ธฐ๋ฅ
- ๋ฉ์์ง ์ด๋ฆ, ํ๋กํ ์ด๋ฏธ์ง, ๋ด์ฉ, ํฐํธ๋ฅผ ์ ํ ๋ฐ ์์ฑ ํ ์ ์๋ ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํ ์ค์ผ๋ ํค UI
- ๋ฐ์ดํฐ๊ฐ ์๋ ํ์ด์ง๋ฅผ ์ํด 404ํ์ด์ง ์์ฑ
- SEO ํฅ์์ ์ํด react-helmet ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ํ์ด์ง ๋ณ ๋ฉํํ๊ทธ ์์ฑ
- ๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ์ด ์๋ ์ ์ ๊ฐ์ํด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ด์ง ์๋จ์ผ๋ก ์ด๋ํ ์ ์๋ ๋ฒํผ ์ถ๊ฐ
๐ด ์คํฌ๋กค ์ด๋ฒคํธ๋ก ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ์ ๋, ๋ฆฌํ๋ก์ฐ์ ์ํด ๋ ๋๋ง ์ฑ๋ฅ์ด ์ข์ง ์์ + ์๋ํ๋๋ก ๋์ํ์ง ์๋ ๋ฌธ์ ์ ๋ฐ์
๐ข Intersection Observer API์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ค ํ๋์ธ ๋ธ๋ผ์ฐ์ Viewport์ Target์ผ๋ก ์ค์ ํ ์์์ ๊ต์ฐจ์ ์ ๊ด์ฐฐํ์ฌ Target์ด Viewport์ ํฌํจ๋๋์ง๋ฅผ ๊ตฌ๋ณํ๋ ๊ธฐ๋ฅ์ ์ด์ฉํด ํด๊ฒฐ
2๏ธโฃ react-quill ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ํธ์ง๊ธฐ์์ ์์ฑํ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ์กํ์ ๋
๐ด react-quill ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด ํธ์ง๊ธฐ์์ ์์ฑํ ๋ด์ฉ์ ๋ฉ์์ง ์นด๋์ ๋ณด์ฌ์ค ๋ htmlํ์์ ๊ฐ์ด ๊ทธ๋๋ก ๋ณด์ฌ์ง๊ฒ ๋๋ ๋ฌธ์ ์ ๋ฐ์
๐ข dangerouslySetInnerHTML์ ์ด์ฉํด string์ html๋ก ํ์ฑํด์ DOM์ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐ
but, ์นํ์ด์ง์ ์
์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์
ํ ์ ์๋ ์ทจ์ฝ์ ์ด ์์ด์ ์ฌ์ฉ์์ ์
๋ ฅ ๊ฐ์ ๊ฒ์ฌํ๊ณ ์ฌ์ฉํ๋ ์์ผ๋ก ๋ณด์ํ๋ฉด ์ข์ ๋ฏ
๐ด react-helmet ์ ์ด์ฉํด ๋์ ์ผ๋ก ์์ฑํ ๋ฉํํ๊ทธ๊ฐ title๋ง ๋ฐ๋๊ณ url๊ณต์ ์ ์ ์ฉ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์
๐ข ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ๋กค๋ฌ๋ html ๋ฌธ์๋ฅผ ๋ก๋ฉํ ๋ค ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํจ. ๊ทธ๋์ ์ ์ html๋ก ๋ฏธ๋ฆฌ ๋ ๋๋งํด์ ํฌ๋กค๋ฌ์๊ฒ ์ ๋ฌํด์ค ์ ์๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด react-snap์ ์ฌ์ฉ (CSR ๊ธฐ๋ฐ์์ Pre-rendering์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
๐ด ์ด๊ธฐ ์ฌ๋ฌ ์๋ฃ๋ ๋ฉํ ๋ ์กฐ์ธ์ ์ฐธ๊ณ ํด ์ปจ๋ฒค์
๋ฃฐ์ ์
ํ
ํ์์ผ๋ ์ค์ ํ์
์ ๋ค์ด๊ฐ๋ ๊ฐ์ ์๊ฐํ๋ ๊ฐ๋
์ ๋์ด๋ ๋ฒ์๊ฐ ๋ฌ๋ผ ์ปจ๋ฒค์
์ ์ ํ์์๋ ์ฝ๋์ ํต์ผ์ฑ์ด ๋จ์ด์ง๋ ๋ฌธ์ ๋ฐ์
๐ข ์ง๋ฃจํ๊ณ ๊ท์ฐฎ์ง๋ง ์ปจ๋ฒค์
์ ๊ดํ ํ์๋ฅผ ์ฌ๋ฌ๋ฒ ํด๊ฐ๋ฉฐ ๋ช
ํํ ๊ธฐ์ค์ ์ธ์ ํ๋ฐ์ผ๋ก ๊ฐ์๋ก ํผ์ ์ ๋น๋ ์ผ์ด ์ค์ด๋ค ์ ์์์