๐Ÿ’ป ๋น„๋“œ๋งˆ์ผ“ ๋ฆฌํŒฉํ† ๋ง next/link ์ ์šฉ๊ธฐ

waterglassesยท2022๋…„ 9์›” 24์ผ
1

๋ฆฌํŒฉํ† ๋ง

๋ชฉ๋ก ๋ณด๊ธฐ
4/6
post-thumbnail

โš ๏ธ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์€ ์˜คํƒ€๋‚˜ ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

next/Router

๋น„๋“œ๋งˆ์ผ“ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ next/Router์˜ useRouter ํ›…์„ ์‚ฌ์šฉํ•ด์„œ router ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

router ์‚ฌ์šฉ

router.push

router.push(url, as, options)
  • ๋ผ์šฐํ„ฐ ํžˆ์Šคํ† ๋ฆฌ ์Šคํƒ์— ์ƒˆ๋กœ์šด url์„ ์Œ“์•„์ค€๋‹ค.
  • url: ๋ผ์šฐํŒ… ํ•˜๋ ค๋Š” url
  • as: ๋ธŒ๋ผ์šฐ์ € url ๋ฐ”์— ๋ณด์—ฌ์ง€๋Š” path
  • options: scroll, locale ๋“ฑ์˜ ์˜ต์…˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๋น„๋“œ๋งˆ์ผ“์—์„œ๋Š” SEO์˜ ํšจ๊ณผ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ 'next/Link'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์„ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

passHref ์†์„ฑ

์ฒ˜์Œ์—๋Š” ๊ทธ๋ƒฅ ๋ฌด์กฐ๊ฑด <Link> ํƒœ๊ทธ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ๋ณ€๊ฒฝ์„ ํ•˜์˜€๋‹ค. ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด href ์†์„ฑ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋กค๋Ÿฌ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒ‰์ธํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์žˆ๊ฒŒ ๋œ๋‹ค.

๊ทธ ํ›„ next/link ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•œ ๊ฒฐ๊ณผ passHref์„ ์ ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. passHref ์†์„ฑ์€ ์ž์‹์—๊ฒŒ href์†์„ฑ์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด href ์†์„ฑ์ด ์ ์šฉ๋œ๋‹ค.

์ด๊ฒƒ์€ ์ž˜ ์ž‘๋™๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ aํƒœ๊ทธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์›น ํฌ๋กค๋Ÿฌ์—๋Š” ๋งํฌ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์•„ SEO์— ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค๊ณ  ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ <a>ํƒœ๊ทธ๋ฅผ ์ง์ ‘ ์ฝ”๋“œ์— ๋„ฃ์–ด ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

<Link href={`/products/${id}`} passHref>
  <a>
    <Button ~~ />
  </a>
</Link>

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ, ์•„๋ž˜์ฒ˜๋Ÿผ ์ฝ”๋“œ๊ฐ€ ๋ณด์ด๊ฒŒ ๋˜์—ˆ๋‹ค.

prefetch ์†์„ฑ

next/link์—๋Š” prefetch ์†์„ฑ์ด ์žˆ๋Š”๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ํŽ˜์ด์ง€๋ฅผ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.๊ธฐ๋ณธ์œผ๋กœ true๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ์ ์šฉ๋˜์–ด ์žˆ๋Š” ์†์„ฑ์ด๋‹ค.

๊ฒฐ๊ตญ, ๋ธŒ๋ผ์šฐ์ €์˜ viewport์— Link์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜๋ฉด Link ์ปดํฌ๋„ŒํŠธ์— ์—ฐ๊ฒฐ๋œ page๋“ค์˜ ์ฝ”๋“œ๋“ค์„ ๋ฏธ๋ฆฌ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— Link๋ฅผ ํด๋ฆญํ•˜๊ฒŒ๋˜๋ฉด ๋น ๋ฅด๊ฒŒ ํŽ˜์ด์ง€ ์ „ํ™˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

next/link์—๋Š” prefetch ์†์„ฑ์ด ์žˆ์–ด์„œ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•  ๋•Œ router.push ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ๊ณ  ๊ทธ ์ด์œ ๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค.

์œ„์˜ gif์—์„œ ์ฒ˜๋Ÿผ ๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ์นด๋“œ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ์ •๋ณด๋ฅผ SSR๋กœ ์ฆ‰, getServerSideProps๋กœ ์–ป์–ด์˜ค๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

์ด ์ž‘์—…์€ ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ”์„ ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ธ ํŽ˜์ด์ง€๋Š” ์ฒ˜์Œ์— ๋ฏธ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ์ƒํƒœ๋กœ ๋ฏธ๋ฆฌ prefetchํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, next/link๋กœ ๊ฒฐ๊ตญ ๋‹ค์Œ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋”๋ผ๋„ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ์—” ๋Š๋ฆฐ ์†๋„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ฒƒ์ด๋‹ค.

์•ž์œผ๋กœ์˜ ๊ณ ๋ฏผ

์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ์ ‘๊ทผํ•˜๋Š” ์†๋„๋ฅผ ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ํ•˜๊ณ  ์‹ถ์€๋ฐ ๊ทธ๋Ÿฌ๋ ค๋ฉด CSR๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•œ ํ‹€์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋†“๊ณ  ๋ฐ์ดํ„ฐ๋งŒ ์š”์ฒญํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋” ๋น ๋ฅด๊ฒŒ ๋Š๊ปด์งˆ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ƒ์„ธ ํŽ˜์ด์ง€์— SEO๋กœ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๋Š” ๋ฐ์ดํ„ฐ์˜ ์ƒํ’ˆ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์–ด๋†จ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์—์„œ API๋ฅผ ๊ฒฐ๊ตญ ํ˜ธ์ถœ ํ•ด์•ผ๋งŒ ํ•œ๋‹ค.ใ… ใ… 

์ด ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ํฌ๊ธฐํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ฒƒ์ธ์ง€, ๋‘˜ ๋‹ค ํฌ๊ธฐํ•˜์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ์„์ง€ ์กฐ๊ธˆ ๋” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.๐Ÿ˜ญ

๐Ÿ”ฅ ๋Š๋‚€์ 

next์˜ ๊ธฐ๋Šฅ์„ ๋„์ž…ํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฌด์กฐ๊ฑด ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹˜์„ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ฒฐ๊ตญ nextjs์˜ ๋™์ž‘ ๊ณผ์ •์„ ์ œ๋Œ€๋กœ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„๋กœ ์ด๋Ÿฐ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์„œ ๋„์ž…ํ•ด์•ผ์ง€! ๋ผ๋Š” ์ƒ๊ฐ์€ ๋งค์šฐ ์œ„ํ—˜ํ•œ ๊ฒƒ์ž„์„ ์•Œ์•˜๋‹ค.ใ… ใ…  ์•ž์œผ๋กœ๋Š” ์™œ ๋™์ž‘ํ•˜๊ณ  ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค.

๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋ฉด์„œ ๊ทธ๋ž˜๋„ ์„ฑ๋Šฅ ๊ฐœ์„ ์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ์–ด์„œ ๋งค์šฐ ์ข‹๋‹ค!!
์•ž์œผ๋กœ๋„ ํ™”์ดํŒ…!>_<

Refer

profile
๋งค ์ˆœ๊ฐ„ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€