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
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๋ค์ ํฐ ์ซ์ ํ์ด (0) | 2023.04.17 |
---|---|
์ฝ๋ ์คํ๋ฆฌํ (0) | 2023.04.16 |
2023.03.26, weekly memoirs (0) | 2023.03.26 |
Create-React-App ์์์ npm run eject (0) | 2023.03.20 |
react) inline style ๋จ์ (0) | 2023.03.20 |
๋๊ธ