์ ์ฒด ๊ธ(42)
-
[Next.js] (12) - Streaming
๐ ์คํธ๋ฆฌ๋ฐํด๋ผ์ด์ธํธ์์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ง ์์๋ ์ง๊ธ๊น์ง ๋ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ -> ๊ฒฐ๊ณผ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๊ธด ๋ก๋ฉ ์์ด ์ฌ์ฉ์์๊ฒ ์ข์ ๊ฒฝํ ์ ๊ณต ๊ฐ๋ฅ์คํธ๋ฆฌ๋ฐ์ ์ด์ฉํ๋ฉด ์ผ๋จ ๋ญ๋ผ๋ ๋น ๋ฅด๊ฒ ๋ณด์ฌ์ค ์ ์์๋๋ฆฌ๊ฒ ๋ ๋๋ง ๋๋ ๋ถ๋ถ?๋ก๋ฉ๋ฐ ๊ฐ์ ๋์ฒด UI๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ๋๋ค!Dynamic ํ์ด์ง์ ์์ฃผ ์ด์ฉ๋๋ค.ํ์ด์ง ์คํธ๋ฆฌ๋ฐ์ค๋ ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ์ ๋ ๋๋ง์ ์ฌ์ฉ์๊ฐ ์ข ๋ ์ข์ ํ๊ฒฝ์์ ๊ธฐ๋ค๋ฆด ์ ์๋๋ก ํด์ฃผ๋ ๊ธฐ๋ฅ ๐ Stream - ๊ฐ์ฒ, ๊ฐ๋ฌผ์คํธ๋ฆฌ๋ฐ - ๊ฐ๋ฌผ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ ค ๋ณด๋ด๋ฏ์ด ์ฐ์์ ์ผ๋ก ํ ๋ฐ์ดํฐ์ฉ ํ๋ ค ๋ณด๋ด๋ ๊ฒ ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboar..
2024.11.14 -
[Next.js] (11) - Client Route Cache
๐ ํด๋ผ์ด์ธํธ ๋ผ์ฐํธ ์บ์๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ ์บ์ - ํ์ด์ง ์ด๋์ ํจ์จ์ ์ผ๋ก ์งํํ๊ธฐ ์ํด ํ์ด์ง์ ์ผ๋ถ ๋ฐ์ดํฐ ๋ณด๊ดLayout์ ~/, ~/search ์ผ ๊ฒฝ์ฐ์ ๊ณ์ ๋ถ๋ฌ์ด (์ค๋ณต ์์ฒญ) - ํด๋ผ์ด์ธํธ ๋ผ์ฐํธ ์บ์์ ์ฉ ์๋ ๊ฒฝ์ฐ๊ณตํต๋ ๋ ์ด์์๋ง ๋ฐ๋ก ๋ณด๊ดํด์ ์๋ฒ์ ์ค๋ณต์์ฒญ ํ์ง ์์์๋์ผ๋ก next app ์ ์ ์ฉ๋์ด์์ํด๋ผ์ด์ธํธ ๋ผ์ฐํธ ์บ์๋ ์๋ก๊ณ ์นจ ๋๋ฉด ์ฌ๋ผ์ง (๋ธ๋ผ์ฐ์ ๋๊น!) new Date().toLocaleString() //๋ฆฌ๋ ๋๋ง ๋๋์ง ํ์ธํ ๋ ์ฌ์ฉํ๋ฉด ์ข์ ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboard ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js(15+) ๊ฐ์ | ..
2024.11.14 -
[Next.js] (10) - Full Route Cache(ํ ๋ผ์ฐํธ ์บ์)
๐ Full Route Cache(ํ ๋ผ์ฐํธ ์บ์)Next ์๋ฒ์ธก์์ ๋น๋ ํ์์ ํน์ ํ์ด์ง์ ๋ ๋๋ง ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๋ ๊ธฐ๋ฅ ๐ Dynamic Page๋ก ์ค์ ๋๋ ๊ธฐ์คํน์ ํ์ด์ง๊ฐ ์ ์ ์์ฒญ์ ๋ฐ์ ๋ ๋ง๋ค ๋งค๋ฒ ๋ณํ๊ฐ ์๊ธฐ๊ฑฐ๋, ๋ฐ์ดํฐ๊ฐ ๋ฌ๋ผ์ง ๊ฒฝ์ฐ์บ์๋์ง ์๋ Data Fetching์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋์ ํจ์(์ฟ ํค, ํค๋, ์ฟผ๋ฆฌ์คํธ๋ง)์ ์ฌ์ฉํ๋ ์ปดํฌ๋ํธ๊ฐ ์์ ๋๐ Static Page๋ก ์ค์ ๋๋ ๊ธฐ์คDynamic Page ๊ฐ ์๋๋ฉด ๋ชจ๋ Static Page๊ฐ ๋๋ค (Default)๋์ ํจ์(ex: Query String)๋ฐ์ดํฐ ์บ์ํ์ด์ง ๋ถ๋ฅYesNoDynamic PageYesYesDynamic PageNoNoDynamic PageNoYesStatic Page - ํ ๋ผ์ฐํธ ์บ์ ์ ์ฉ R..
2024.11.12 -
[Next.js] (9) - Request Memoization
๐ Request Memoization (์์ฒญ์ ๊ธฐ์ตํ๋ค)ํ๋์ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ๋ ์ค๋ณต๋ API์์ฒญ๋ค์ ์๋์ผ๋ก ์บ์ฑ ๐ ์ค์ํ๋์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๋์์ ์ค๋ณต๋ API ์์ฒญ์ ์บ์ฑํ๊ธฐ ์ํด ์กด์ฌ!๊ทธ๋์ ๋ ๋๋ง์ด ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ์บ์๊ฐ ์๋ฉธ๋จNext์์ ์๋์ผ๋ก ์ ๊ณต๐ Data Cache ๊ฐ ๋ฉ๋ชจ์ด์ ์ด์ ๊ณผ ๋ค๋ฅธ ์ ๋ฐฑ์๋ ์๋ฒ๋ก๋ถํฐ ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ ๊ฑฐ์ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ดํ๊ธฐ ์ํด ์ฌ์ฉ์๋ฒ ๊ฐ๋์ค์๋ ์๊ตฌ์ ์ผ๋ก ๋ณด๊ด ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboard ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js(15+) ๊ฐ์ | ์ด์ ํ Winterlood - ์ธํ๋ฐ์ด์ ํ Winterloo..
2024.11.12 -
[Next.js] (8) - Data Cache
๐ Data Cachefetch ๋ฉ์๋๋ฅผ ํ์ฉํด ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ Next์๋ฒ์์ ๋ณด๊ดํ๋ ๊ธฐ๋ฅ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ ๋ณด๊ด, ํน์ ์๊ฐ์ ์ฃผ๊ธฐ๋ก ๊ฐฑ์ ์ํค๋ ๊ฒ ๊ฐ๋ฅ๋ถ ํ์ํ ๋ฐ์ดํฐ ์์ฒญ ์๋ฅผ ์ค์ฌ์ ์น ์๋น์ค์ ์ฑ๋ฅ ํฌ๊ฒ ๊ฐ์ ๊ฐ๋ฅconst response = await fetch('/api',{ cache: "force-cache" });//์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํจ, ํ ๋ฒ๋ง ๋ถ๋ฌ์ด//next.js ์์ fetch ๋ผ๋ ๋ฉ์๋๋ง ์ฌ์ฉํด์ผํจconst response = await fetch('/api',{ cache: "no-store" });//๋ฐ์ดํฐ ํ์นญ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ์ง ์๋ ์ต์ //์บ์ฑ์ ์์ ํ์ง ์๋๋ก ์ค์ ํ๋ ์ต์ const response = await fetch('/api',{ next: { re..
2024.11.12 -
[Next.js] (7) - Data Fetching (in App Router)
๐ Data Fetching in Page Router๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ ์๋ฒ, ํด๋ผ์ด์ธํธ ๋ชจ๋ ์คํํน์ํ ํจ์๋ฅผ ์ด์ฉํด์ผ๋ง ์๋ฒ์์๋ง ๋ฐ์ดํฐ ํจ์นญ์ด ๊ฐ๋ฅ. ์ต์๋จ์์ ๋ฐ์ดํฐ ํจ์นญ์ ํด์ผ๋ง ํจ props drilling ๋ฐ์๐ Data Fetching in App RouterFetcing data where it's needed(๋ฐ์ดํฐ๋ ํ์ํ ๊ณณ์์ ์ง์ ๋ถ๋ฌ์) ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs/dashboard ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js(15+) ๊ฐ์ | ์ด์ ํ Winterlood - ์ธํ๋ฐ์ด์ ํ Winterlood | ํ์ ์๋ฆฌ์ฆ์ 3๋ฒ์งธ ์ํ! ์ธ์์์ ๊ฐ์ฅ ์น์ ํ..
2024.11.11 -
[Next.js] (6) - Page Router ์ฅ๋จ์
๐ Page Router ์ ์ฅ์ ํ์ผ ์์คํ ๊ธฐ๋ฐ์ ๊ฐํธํ ํ์ด์ง ๋ผ์ฐํ ์ ๊ณต๋ค์ํ ๋ฐฉ์์ ์ฌ์ ๋ ๋๋ง ์ ๊ณต์ ์ ์ฌ์ดํธ ์์ฑ (SSG) ์ต์ ๋ฐ์ดํฐ X์ฆ๋ถ ์ ์ ์ฌ์์ฑ (ISR)์ ํต๊ธฐํ ์ค์ ๊ฐ๋ฅ (์ต์ ๋ฐ์ดํฐ ๋ฐ์)On Demand - Revalidate ์์ฒญ (์ฆ๊ฐ์ ์ผ๋ก ๋ฐ์ ๊ฐ๋ฅ) ๐ Page Router ์ ๋จ์ ๋ค์ํ ๋ฐฉ์์ ์ฌ์ ๋ ๋๋ง ์ ๊ณต ์ํธ์์ฉ์ด ํ์ํ์ง ์์ ํ์ด์ง๋ JS Bundle ์ ํฌํจ๋์ด ๋ถํ์ํ๊ฒ ๋ฒ๋ค ์ฉ๋์ด ์ปค์ง๋ค.์๋ฒ์์๋ง ์คํํ๋ฉด ๋๋ ์ปดํฌ๋ํธ (React Server Component)Hydration ์๊ฐ์ด ๊ธธ์ด์ง -> TTI ๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง ์ถ์ฒ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%..
2024.11.11 -
[Next.js] (5) - ์ฌ์ ๋ ๋๋ง (SSR, SSG)
๐ Next.js ๋ค์ํ ์ฌ์ ๋ ๋๋ง์๋ฒ์ฌ์ด๋ ๋ ๋๋ง (SSR)๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ ๋ ๋๋ง ๋ฐฉ์์์ฒญ์ด ๋ค์ด์ฌ ๋ ๋ง๋ค ์ฌ์ ๋ ๋๋ง์ ์งํํจ์ ์ ์ฌ์ดํธ ์์ฑ(SSG)๋น๋ ํ์์ ๋ฏธ๋ฆฌ ํ์ด์ง๋ฅผ ์ฌ์ ๋ ๋๋ง ํด ๋ ์ฆ๋ถ ์ ์ ์ฌ์์ฑ (ISR)ํฅํ์ ๋ค๋ฃฐ ์ฌ์ ๋ ๋๋ง ๋ฐฉ์ ๐ SSR - ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง (์์ฒญ์ด ๋ค์ด์ฌ ๋ ๋ง๋ค ์ฌ์ ๋ ๋๋ง์ ์งํ)export const getServerSideProps = () => { // ์ปดํฌ๋ํธ๋ณด๋ค ๋จผ์ ์คํ, ์ปดํฌ๋ํธ์ ํ์ํ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๋ ํจ์ // ์ค์ง ์๋ฒ์ธก์์๋ง ํ ๋ฒ ์คํ const data = 'hello' return { //๋จ ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํด, props ํ๋กํผํฐ๊ฐ์ ๋ฃ์ด์ผํจ props: { data, }, ..
2024.11.05