๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL

next.js ํ•™์Šต (1)

by ์€์ง€:) 2023. 4. 14.
728x90
๋ฐ˜์‘ํ˜•

 

 

next.js

 

 

 

 

 

๐Ÿ‘‡ ๋„คํŠธ์›Œํฌ ํ™•์ธํ•˜๋Š” ๋ฒ•

 


 

 

 

 

ssr (server side render)

์„œ๋ฒ„๊ฐ€ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ

 

-> ์ƒˆ๋กœ๊ณ ์นจํ•  ๋•Œ๋งˆ๋‹ค ๋ฐ”๋กœ๋ฐ”๋กœ ์„œ๋ฒ„์—์„œ ์‹œ๊ฐ„๋Œ€๋ฅผ ๋ฐ›์•„์˜ด

 

์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  props๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๋ฐฉ์‹

 

getServerSideProps ์•ˆ์— console.log(111) ์ฐ์œผ๋ฉด

ํ„ฐ๋ฏธ๋„์— ์ฝ˜์†”์ด ์ฐํžˆ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์•ˆ ์ฐํž˜

 

 

 

 

csr (client side render)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๊ทธ๋ฆฐ๋‹ค

 

-> csr ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์—†์Œ

๊ธฐ์กด ๋ฆฌ์•กํŠธ ์‚ฌ์šฉ๋ฒ•๊ณผ ๋™์ผ

 

useEffect, useState ์‚ฌ์šฉํ•ด์„œ ์‹œ๊ฐ„์„ ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹

 

console.log(1111) ์ฐ์„ ์‹œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฐํž˜

 

: ttfb : ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋‚œ ํ›„ ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์ฒซ๋ฒˆ์งธ ๋ฐ”์ดํŠธ๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

 

: fcp : ํ…์ŠคํŠธ / ์ด๋ฏธ์ง€ ๋“ฑ ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๊ธฐ ์‹œ์ž‘ํ•œ ์‹œ์ , ์ฝ˜ํ…์ธ  ์ผ๋ถ€๊ฐ€ ๋ Œ๋”๋ง ๋˜๊ธฐ ์‹œ์ž‘ํ•œ ์‹œ์ ์˜ ์‹œ๊ฐ„

=> fcp ๊ฐ€ ๋น ๋ฅด๋ฉด ์„œ๋น„์Šค๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ (1.8์ดˆ๋Š” ์ข‹์€ ์ ์ˆ˜)

 

: ttl : ์•ฑ์ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š”๋ฐ ์ค€๋น„๊ฐ€ ๋œ ์‹œ์  (ํ™”๋ฉด ๊ทธ๋ ค์ง€๋Š” ๊ฒƒ๊ณผ ๋ฌด๊ด€)

 

 

https://web.dev/rendering-on-the-web/

 

๋™์ž‘

 

์„œ๋ฒ„์— ์ตœ์ดˆ get ์š”์ฒญ -> ๋นˆ html -> js css ๋“ฑ asset ๋‹ค์šด๋กœ๋“œ -> js ํŒŒ์ผ ์‹คํ–‰ -> react ์‹คํ–‰ ํ›„ ๋ Œ๋”๋ง -> ํ™”๋ฉด ์ถœ๋ ฅ

 

 

 


 

 

ssg (static side generation)

์ •์ ์ธ ์‚ฌ์ดํŠธ๋ฅผ ์ƒ์„ฑ(๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๊ทธ๋ ค๋‘ )

blog์— ์ ํ•ฉ(๊ธ€์„ ์“ธ ๋•Œ ์ด์™ธ์—” ๋ฐ”๋€” ์ผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ)

 

-> ssg ๋‹ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜

getStaticProps, getStaticPaths

 

 

 

๋™์ž‘

 

https://web.dev/rendering-on-the-web/

 

 

์„œ๋ฒ„์— get ์š”์ฒญ-> ๋ฏธ๋ฆฌ ์™„์„ฑ๋œ html ์‘๋‹ต -> ํ™”๋ฉด ์ถœ๋ ฅ

 

 

getStaticProps

 

console.log(111) ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ„ฐ๋ฏธ๋„์— ์ฐํž˜

ssg ๋Š” ssr ์ฒ˜๋Ÿผ ๋™์ž‘ํ•ด์„œ ํ—ท๊ฐˆ๋ฆผ

 

 

ssg ๋ณด๋Š” ๋ฐฉ์‹

 

build ํ›„์— start

-> ์‹œ๊ฐ„ ์•ˆ ์ฐํž˜... ๋นŒ๋“œ ํ›„์— ๋งŒ๋“ค์–ด์ง„ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ

 

 

๊ทธ๋Ÿผ ์–ธ์ œ ํ•„์š”?

ssr ์€ ์ƒˆ๋กœ ๊ณ ์นจ ํ• ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜ด -> ์„œ๋ฒ„ ๋ถ€ํ•˜

ssg๋Š” ๋นŒ๋“œํ• ๋•Œ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ๋ถ€ํ•˜ ์—†์ด ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์Œ

 

 

 

 

getStaticProps

 

 

getStaticProps ์™€ ํ•จ๊ป˜ ์“ฐ์ด๋Š” ํ•จ์ˆ˜

path๋ฅผ ๋ฏธ๋ฆฌ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ํ•จ

 

 

 

 

 

ISR (incremental static Regeneration)

 

์ฆ๋ถ„ ์‚ฌ์ดํŠธ๋ฅผ ์žฌ์ƒ์„ฑ

-> ํŠน์ • ์ฃผ๊ธฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋‹ค์‹œ ๊ทธ๋ ค๋‘”๋‹ค

 

getStaticProps with revalidate

-> revalidate ๋ผ๋Š” ๊ฐ’์„ ๊ฐ™์ด ๋ฆฌํ„ดํ•˜๋Š” ๊ฒƒ

 

 

 

time์„ ๋ฆฌํ„ดํ•˜๋Š” ์ฝ”๋“œ

revalidate : 1

 

1์ดˆ๋งˆ๋‹ค ๋‹ค์‹œ ํŒจ์นญ = ๋‹ค์‹œ ์ƒ์„ฑ

์‹ค์ œ๋กœ ์ƒˆ๋กœ ๊ณ ์นจ์‹œ ์ฝ˜์†”์ด 1์ดˆ ์ •๋„ ๋Šฆ๊ฒŒ ๋œธ

 

 

 


 

pre-render // SEO

 

 

 

 

 

 

 

next.js๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ pre-render(ssr, ssg) ํ•จ

 

 

์›๋ž˜ React ๋Š” js๊ฐ€ ๋กœ๋“œ ๋˜์–ด์„œ์•ผ UI๋ฅผ ๊ทธ๋ฆผ

pre-rendering์€ js ๊ฐ€ ๋กœ๋“œ ๋˜๊ธฐ ์ „์— HTML๋ฅผ ๋จผ์ € ๊ทธ๋ฆผ

 

 

==> SEO

 

pre-rendering ํ•ด๋‘๋ฉด ๊ฒ€์ƒ‰์—”์ง„์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ

 

 

ssr => ์š”์ฒญ ํƒ€์ž„์— pre-render

ssg => ๋นŒ๋“œ ํƒ€์ž„์— pre-render

 

 

 


 

 

pageprops ๋ฅผ ํ†ตํ•ด ๊ณตํ†ต layout์„ ์กฐ๊ฑด๋ถ€๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

 

 

 

 


 

Image ์ตœ์ ํ™”

 

import Image from "next/image"
import cat from "../pubilc/cat.jpg"

export const imageComponent = () => {
	<Image
    	alt=""
        src={cat}
        width={700}
    />
}

 

์˜ต์…˜์— ๋”ฐ๋ผ์„œ ๋ฆฌ์‚ฌ์ด์ง• ๊ฐ€๋Šฅ

 

 

 

 

csr & ssr & ssg

 

 

๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์˜์ƒ

 

https://www.youtube.com/watch?v=YuqB8D6eCKE

 

 

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€