Skip to content

kimsuns/rolling_team1

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Rolling

์ถ”์–ต์˜ ๋กค๋ง ํŽ˜์ดํผ๋ฅผ ์›น ์ƒ์—์„œ๋„ ์ฆ๊ฒจ๋ณด์„ธ์š” !

image

๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ๋กค๋งํŽ˜์ดํผ์— ๋ฉ”์‹œ์ง€์™€ ์ด๋ชจํ‹ฐ์ฝ˜ ๋ฆฌ์•ก์…˜์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๊ณ ,
์ž๊ธฐ๋งŒ์˜ ๋กค๋งํŽ˜์ดํผ๋ฅผ ๋งŒ๋“ค์–ด ๋‹ค๋ฅธ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค



์„ค์น˜ ๋ฐฉ๋ฒ•

  1. ์†Œ์Šค ํŒŒ์ผ ์„ค์น˜
git clone https://github.com/Dev-Duke-Seo/rolling_team1.git
cd rolling_team1
  1. ํŒจํ‚ค์ง€ ์„ค์น˜
npm install
  1. .env ํŒŒ์ผ ์ƒ์„ฑ
REACT_APP_BASE_URL = 'BASE_URL'
REACT_APP_API_KEY = 'KAKAO_API_KEY'
  1. ์‹คํ–‰
npm run start



๐Ÿซ‚ ํŒ€์› ์†Œ๊ฐœ

์ด์œ ์—ฐ ๊น€์„ ์˜ ๊น€์œจ๋ฏผ ์„œ์ธ๋• ์ด์žฌ๋ช…
ํŒ€์žฅ ํŒ€์› ํŒ€์› ํŒ€์› ํŒ€์›



๐Ÿ—“๏ธ ๊ฐœ๋ฐœ ์ผ์ •

2024.01.17 ~ 2024.02.01 (2์ฃผ)

image



๐Ÿ”จ ์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋„๊ตฌ

๋ฐฐํฌ

Netlify

๊ฐœ๋ฐœ

React JavaScript Visual Studio Code

Styled Components React Router

ํ˜‘์—…

GitHub ESLint Prettier Discord Notion


๐Ÿ“ ํด๋” ๊ตฌ์กฐ

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



๐Ÿ”— ๋ฐฐํฌ ๋งํฌ

Rolling - ๋ฐ”๋กœ๊ฐ€๊ธฐ



โœจ ์„œ๋น„์Šค ์ฃผ์š” ๊ธฐ๋Šฅ


๐Ÿ“„ ๋ฉ”์ธ ํŽ˜์ด์ง€

  • ํ”Œ๋žซํผ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…๊ณผ ํŽ˜์ด์ง€ ์ด๋™ ๋ฒ„ํŠผ

๐Ÿ“„ ๋กค๋งํŽ˜์ดํผ ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€

  • ์ด๋ฆ„๊ณผ ๋ฐฐ๊ฒฝ์ƒ‰์ƒ or ์ด๋ฏธ์ง€๋ฅผ ๊ณจ๋ผ ํŽ˜์ดํผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ

๐Ÿ“„ ๋กค๋งํŽ˜์ดํผ ๋ฆฌ์ŠคํŠธ ๊ตฌ๊ฒฝํ•˜๊ธฐ ํŽ˜์ด์ง€

  • ์ด๋ชจํ‹ฐ์ฝ˜ ๋ฆฌ์•ก์…˜, ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์บ๋Ÿฌ์…€ UI์˜ ๋กค๋งํŽ˜์ดํผ ๋ฆฌ์ŠคํŠธ
  • ํ•˜๋‚˜ ํด๋ฆญ ์‹œ ํ•ด๋‹นํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๋กค๋งํŽ˜์ดํผ๋กœ ์ด๋™

๐Ÿ“„ ๋กค๋งํŽ˜์ดํผ ํŽ˜์ด์ง€

  • ์ด๋ชจ์ง€ ๋ฆฌ์•ก์…˜์„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ์ด ๋กค๋งํŽ˜์ดํผ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ๋กค๋งํŽ˜์ดํผ์— ๋‚จ๊ฒจ์ง„ ๋ฉ”์‹œ์ง€๋“ค์„ ๋ฌดํ•œ ์Šคํฌ๋กค ๋ฐฉ์‹์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ๋ฉ”์‹œ์ง€ ์นด๋“œ๋Š” ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ๋กœ ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ํŽธ์ง‘๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ฉ”์‹œ์ง€ ์นด๋“œ ์‚ญ์ œ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
  • ํ”Œ๋Ÿฌ์Šค ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ๋กค๋งํŽ˜์ดํผ ์ฃผ์ธ์—๊ฒŒ ๋ฉ”์‹œ์ง€ ๋‚จ๊ธฐ๊ธฐ ๊ธฐ๋Šฅ

๐Ÿ“„ ๋ฉ”์‹œ์ง€ ์ƒ์„ฑํ•˜๊ธฐ ํŽ˜์ด์ง€

  • ๋ฉ”์‹œ์ง€ ์ด๋ฆ„, ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, ๋‚ด์šฉ, ํฐํŠธ๋ฅผ ์„ ํƒ ๋ฐ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ



โœจ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ

  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ผˆ๋ ˆํ†ค UI
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ํŽ˜์ด์ง€๋ฅผ ์œ„ํ•ด 404ํŽ˜์ด์ง€ ์ƒ์„ฑ
  • SEO ํ–ฅ์ƒ์„ ์œ„ํ•ด react-helmet ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•œ ํŽ˜์ด์ง€ ๋ณ„ ๋ฉ”ํƒ€ํƒœ๊ทธ ์ž‘์„ฑ
  • ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์ ์„ ๊ฐ์•ˆํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ํŽ˜์ด์ง€ ์ƒ๋‹จ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ ์ถ”๊ฐ€




๐Ÿ’ก ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ


1๏ธโƒฃ ๋ฌดํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์œ„ํ•ด ์Šคํฌ๋กค ์ด๋ฒคํŠธ๋ฅผ ์ด์šฉํ–ˆ์„ ๋•Œ



๐Ÿ”ด ์Šคํฌ๋กค ์ด๋ฒคํŠธ๋กœ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ, ๋ฆฌํ”Œ๋กœ์šฐ์— ์˜ํ•ด ๋ Œ๋”๋ง ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Œ + ์˜๋„ํ•œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ์  ๋ฐœ์ƒ

๐ŸŸข Intersection Observer API์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ ๋ธŒ๋ผ์šฐ์ € Viewport์™€ Target์œผ๋กœ ์„ค์ •ํ•œ ์š”์†Œ์˜ ๊ต์ฐจ์ ์„ ๊ด€์ฐฐํ•˜์—ฌ Target์ด Viewport์— ํฌํ•จ๋˜๋Š”์ง€๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ํ•ด๊ฒฐ



2๏ธโƒฃ react-quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํŽธ์ง‘๊ธฐ์—์„œ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ์ „์†กํ–ˆ์„ ๋•Œ

image

๐Ÿ”ด react-quill ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ํŽธ์ง‘๊ธฐ์—์„œ ์ž‘์„ฑํ•œ ๋‚ด์šฉ์„ ๋ฉ”์‹œ์ง€ ์นด๋“œ์— ๋ณด์—ฌ์ค„ ๋•Œ htmlํ˜•์‹์˜ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ง€๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ์  ๋ฐœ์ƒ

๐ŸŸข dangerouslySetInnerHTML์„ ์ด์šฉํ•ด string์„ html๋กœ ํŒŒ์‹ฑํ•ด์„œ DOM์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ but, ์›นํŽ˜์ด์ง€์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์žˆ์–ด์„œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์„ ๊ฒ€์‚ฌํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์‹์œผ๋กœ ๋ณด์™„ํ•˜๋ฉด ์ข‹์„ ๋“ฏ



3๏ธโƒฃ SEO ํ–ฅ์ƒ์„ ์œ„ํ•œ react-helmet ์ ์šฉํ–ˆ์„ ๋•Œ

image image

๐Ÿ”ด react-helmet ์„ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ ๋ฉ”ํƒ€ํƒœ๊ทธ๊ฐ€ title๋งŒ ๋ฐ”๋€Œ๊ณ  url๊ณต์œ  ์‹œ ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

๐ŸŸข ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌ๋กค๋Ÿฌ๋Š” html ๋ฌธ์„œ๋ฅผ ๋กœ๋”ฉํ•œ ๋’ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•จ. ๊ทธ๋ž˜์„œ ์ •์  html๋กœ ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•ด์„œ ํฌ๋กค๋Ÿฌ์—๊ฒŒ ์ „๋‹ฌํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด react-snap์„ ์‚ฌ์šฉ (CSR ๊ธฐ๋ฐ˜์—์„œ Pre-rendering์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)



4๏ธโƒฃ ์ปจ๋ฒค์…˜? ์ปจ๋ฒค์…˜! ์ปจ๋ฒค์…˜!!


๐Ÿ”ด ์ดˆ๊ธฐ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๋‚˜ ๋ฉ˜ํ† ๋‹˜ ์กฐ์–ธ์„ ์ฐธ๊ณ ํ•ด ์ปจ๋ฒค์…˜ ๋ฃฐ์„ ์…‹ํŒ…ํ•˜์˜€์œผ๋‚˜ ์‹ค์ œ ํ˜‘์—…์— ๋“ค์–ด๊ฐ€๋‹ˆ ๊ฐ์ž ์ƒ๊ฐํ•˜๋Š” ๊ฐœ๋…์˜ ๋„“์ด๋‚˜ ๋ฒ”์œ„๊ฐ€ ๋‹ฌ๋ผ ์ปจ๋ฒค์…˜์„ ์ •ํ–ˆ์Œ์—๋„ ์ฝ”๋“œ์˜ ํ†ต์ผ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ ๋ฐœ์ƒ

๐ŸŸข ์ง€๋ฃจํ•˜๊ณ  ๊ท€์ฐฎ์ง€๋งŒ ์ปจ๋ฒค์…˜์— ๊ด€ํ•œ ํšŒ์˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ํ•ด๊ฐ€๋ฉฐ ๋ช…ํ™•ํ•œ ๊ธฐ์ค€์„ ์„ธ์›Œ ํ›„๋ฐ˜์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ํ˜ผ์„ ์„ ๋นš๋Š” ์ผ์ด ์ค„์–ด๋“ค ์ˆ˜ ์žˆ์—ˆ์Œ

Q & A

image

About

Project Rolling by sprint part2 team1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.7%
  • HTML 0.3%