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

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

by rindev 2021. 7. 28.

โœ์•Œ๊ฒŒ๋œ ๊ฒƒ๋“ค (so many)

  1. styled-components
  2. jsconfig.json ์ถ”๊ฐ€ํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ์ž„ํฌํŠธ
  3. Intersection Observer
  4. [ { isIntersecting } ]
  5. dl, dt, dd
  6. README์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” Markdown Badges
  7. netlify๋กœ ๋ฐฐํฌํ•˜๊ธฐ
  8. ์™œ?์˜ ์†Œ์ค‘ํ•จ feat. ์Šต๊ด€ ๋ฒ„๋ฆฌ๊ธฐ

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

1. styled-components

css in js ๋ฐฉ์‹์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ์ฝ๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

but ๊ทธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ ๋งˆ๋‹ค(!) ์Šคํƒ€์ผ์ •๋ณด๋„ ๊ฐ€์ ธ์˜ด → ๋™์ ์ธ ์ด๋ฒคํŠธ๊ฐ€ ์•„์ฃผ ๋งŽ์€ ์‚ฌ์ดํŠธ๋ผ๋ฉด ์ปดํฌ๋„ŒํŠธ ์ „ํ™˜์ด ๋งŽ์„ ํ…๋ฐ ๊ทธ๋Ÿฌ๋ฉด ๋ Œ๋”๋ง์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๊ธฐ๋„ ํ•˜๋‹ค.

๊ทธ๋ž˜๋„ ํด๋ž˜์Šค๋ช…์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ƒ๊ฐํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์—„์ฒญ๋‚œ ์žฅ์ ์ด ์žˆ์œผ๋‹ˆ ์‹ค์ œ๋กœ ์‚ฌ์šฉ ํ›„ ์ž์„ธํžˆ ์ ์–ด์•ผ๊ฒ ๋‹ค.

 

2. jsconfig.json ์ถ”๊ฐ€ํ•˜์—ฌ ๋ชจ๋“ˆ์„ ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ์ž„ํฌํŠธ

ํ”„๋กœ์ ํŠธ์˜ ์ตœ์ƒ์œ„ํด๋”(root)์— jsconfig.json์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€

→ src ๊นŒ์ง€ ์•Œ์•„์„œ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ฐ‘์˜ ๊ฒฝ๋กœ๋งŒ ์ ์œผ๋ฉด ๋œ๋‹ค.

{
  "compilerOptions": {
    "baseUrl": "src"
  },
  "include": ["src"]
}

 

3. Intersection Observer

1) target์œผ๋กœ ์นญํ•˜๋Š” ์š”์†Œ๊ฐ€ ๊ธฐ๊ธฐ ๋ทฐํฌํŠธ๋‚˜ ํŠน์ • ์š”์†Œ์™€ ๊ต์ฐจ

2) observer๊ฐ€ ์ตœ์ดˆ๋กœ ํƒ€๊ฒŸ์„ ๊ด€์ธกํ•˜๋„๋ก ์š”์ฒญ๋ฐ›์„ ๋•Œ

๋งˆ๋‹ค ํ˜ธ์ถœ๋˜๋Š” callback์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. (option์€ optional / callback์€ entries, observer๋ฅผ ๋งค๊ฐœ๋กœ ๋ฐ›์Œ)

let options = {
  root: document.querySelector('#scrollArea'),
  rootMargin: '0px',
  threshold: 1.0
}

let observer = new IntersectionObserver(callback, options); 
//new IntersectionObserver(callback[, options]);

10์˜ ๋ฐฐ์ˆ˜ comment๋“ค์„ target์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ํƒ€๊ฒŸ์ด isIntersecting ๋˜๋ฉด → page+1์„ ํ•œ๋‹ค → ๊ทธ page์˜ comments๋“ค์„ ๊ฐ€์ ธ์˜จ๋‹ค

์œ„๊ฐ€ ๋™์ž‘์˜ ํฐ ํ‹€์ด๋‹ค. ์ž์„ธํ•œ ๋ถ€๋ถ„์€ ์ถ”ํ›„ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ด๋‹ค..!

(์ถ”๊ฐ€๋œ ๊ธ€์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธ!)

 

 

4. [ { isIntersecting } ]

์ง๋‹˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ž˜ ๋ชฐ๋ผ์„œ ๋ฌผ์–ด๋ดค๋˜ ๋ถ€๋ถ„์ด๋‹ค.

IntersectionObserverEntry๊ฐ€ ์—ฌ๋Ÿฌ properties๋ฅผ ๊ฐ–๋Š”๋ฐ(MDN ์ฐธ๊ณ ) ๊ทธ ์ค‘ ํ•˜๋‚˜์ธ isIntersecting๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

[ ] ๋กœ Entry๋ฅผ ๊ตฌ์กฐ๋ถ„ํ•ด → ๊ทธ ์•ˆ์— ์žˆ๋Š” {isIntersecting} ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ๋ผ๊ณ  ์•Œ๋ ค์ฃผ์…จ๋‹ค. ์ฒœ์žฌ..

 

5. dl, dt, dd

dl์€ ์„ค๋ช… ๋ชฉ๋ก์„ ๋‚˜ํƒ€๋ƒ„, ์ฃผ๋กœ ์šฉ์–ด์‚ฌ์ „์ด๋‚˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(key-value)๋ฅผ ํ‘œ์‹œํ•  ๋•Œ ์‚ฌ์šฉ
dt : ์šฉ์–ด
dd : ๊ทธ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ ์ด๋ฃจ์–ด์ง

์ด๊ฑด 8๋ฒˆ๊ณผ๋„ ์—ฐ๊ฒฐ๋˜๋Š” ๋ฌธ์ œ์ธ๋ฐ, ๋‚ด๊ฐ€ div์™€ span์„ ์‚ฌ์šฉํ•œ ๋ถ€๋ถ„์—์„œ ์ง๋‹˜์ด ์‹œ๋ฉ˜ํ‹ฑ์ ์œผ๋กœ dl, dt, dd๊ฐ€ ๋” ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์˜๊ฒฌ์„ ๋ง์”€ํ•ด์ฃผ์…”์„œ ๋„ˆ๋ฌด ์ข‹์•˜๋‹ค. 

 

6. README์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” Markdown Badges

๋‚˜๋Š” ๋…ธ์žผ ๋ฆฌ๋“œ๋ฏธ๋ฅผ ์“ฐ๊ณ ์žˆ์—ˆ๊ณ  ์ง๋‹˜์ด ๊ท€์—ฌ์šด ๋ฐฐ์ง€๋ฅผ ์•Œ๋ ค์ฃผ์…จ๋‹ค.
๋ฐฐ์ง€๋ฅผ ๋ชจ์•„๋‘” github ←์–ธ์  ๊ฐ€ ์ด ๋ฐฐ์ง€๋“ค์„ ๋‹ค ์“ธ์–ด๋‹ด์„๊ฑฐ์•ผ๐Ÿ˜Ž

 

7. netlify๋กœ ๋ฐฐํฌํ•˜๊ธฐ

github ์•„์ด๋””๋กœ ๊ฐ€์ž…ํ•˜๊ณ  repository ์—ฐ๊ฒฐํ•˜๋‹ˆ๊นŒ ๊ธˆ๋ฐฉ ๋ผ์„œ ๊นœ์ง ๋†€๋ž๋‹ค!

ํ’€๋ฆฌํ€˜๋ฅผ ๋ฐ›์€ ํ›„ merge๋ฅผ ํ•˜๋ฉด ์œ„์˜ Deploys์— ๋“ค์–ด๊ฐ€์„œ ์šฐ์ธก ํ•˜๋‹จ์˜ Trigger deploy๋ฅผ ํ™•์ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

8. ์™œ?์˜ ์†Œ์ค‘ํ•จ feat. ์Šต๊ด€ ๋ฒ„๋ฆฌ๊ธฐ

๊ตฌ๊ธ€meet๋กœ ์–˜๊ธฐ๋ฅผ ํ•˜๋Š”๋ฐ ์ง๋‹˜์ด ์™œ ์ด๋ ‡๊ฒŒ ํ•˜์…จ๋Š”์ง€, ๊ทธ๊ฑธ ์“ฐ์‹  ์ด์œ ๋Š” ๋ฌด์—‡์ธ์ง€ ๋ฌผ์–ด๋ด์ฃผ์…”์„œ ์ •๋ง๋กœ ๋งŽ์ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋๋‹ค. ์งˆ๋ฌธ์— ์–ด............... ํ•˜๋ฉด์„œ ์ œ๋Œ€๋กœ ๋Œ€๋‹ตํ•˜์ง€ ๋ชปํ•ด์„œ ์ฃ„์†กํ–ˆ๋‹คใ… ใ…  ๋” ๋‚˜์€ ์„ ํƒ์ง€๋ฅผ ๋ชฐ๋ผ์„œ ๋ชป ์“ด ๊ฒƒ๋„ ์žˆ์—ˆ๊ณ , ๊ทธ๋ƒฅ ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋˜ ๊ฒƒ๋„ ์žˆ๊ณ  ํ•ด์„œ ๋ถ€๋„๋Ÿฝ๊ธฐ๋„ ํ•˜๊ณ  ์ซŒ ์•„์‰ฝ?๊ธฐ๋„ ํ•˜๋‹ค. ์˜ˆ์ „์—๋„ ์ ‘๊ทผ์„ฑ์ด๋‚˜ ์›น ํ‘œ์ค€ ๊ด€๋ จ๋œ ๊ธ€์„ ์ฝ๊ณ  ๋ฐ˜์„ฑํ–ˆ์—ˆ๋Š”๋ฐ ๋˜ ๋ฌด๋ŽŒ์กŒ๋‚˜๋ณด๋‹ค... div ์‚ฌ๋ž‘ ๊ทธ๋งŒํ•ด..

 

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

์ฒ˜์Œํ•˜๋Š” ๊ณผ์ œ์˜€๋Š”๋ฐ ์ •๋ง ์ง๋‹˜ ๋„ˆ๋ฌด ์ฒœ์žฌ๊ณ  ์ฒœ์‚ฌ๊ณ  ์˜ฌ๋ฆผํ”ฝ ๋‚˜๊ฐ”์œผ๋ฉด ๋ชฉ์— ๊ธˆ๋ฉ”๋‹ฌ 10๊ฐœ ๊ฑธ๊ณ  ์˜ค์…จ์„๋ถ„์ธ๋ฐ ๋„ˆ๋ฌด ๊ณ ์ƒ ๋งŽ์ดํ•˜์‹ ๊ฒƒ๊ฐ™์•„์„œ ๊ฐ์‚ฌํ•˜๊ณ  ์ฃ„์†กํ•œ ๋งˆ์Œ์ด๋‹คใ… ใ…  ํŒ€๊ณผ์ œ๋„ ๋ชจ๋‘ ์ ๊ทน์ ์œผ๋กœ ์ฐธ์—ฌํ•ด์ฃผ์…”์„œ ๋” ์—ด์‹ฌํžˆ ๊ณต๋ถ€ํ•˜๊ณ ์‹ถ์€(+ํ•ด์•ผ๊ฒ ๋‹ค๋Š”) ๋งˆ์Œ์ด ๋งŽ์ด ์ƒ๊ฒผ๋‹ค! 4์กฐ ๋งŒ์„ธ

 

 

 

๐Ÿ™‡‍โ™€๏ธ์ฐธ๊ณ 

๋”๋ณด๊ธฐ

https://developer.mozilla.org/ko/docs/Web/API/Intersection_Observer_API

https://create-react-app.dev/docs/importing-a-component/#absolute-imports https://developer.mozilla.org/ko/docs/Web/HTML/Element/dl

https://github.com/Ileriayo/markdown-badges

 

๋Œ“๊ธ€