Next.js

Next.js์ Pre-Rendering(SSR vs SSG) ๊ณผ Hydrate
Pre-Render ์ Hydrate Next.js ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํ์ด์ง๊ฐ pre-renders ๋๋ค. ์ด ๋ง์ ํด๋ผ์ด์ธํธ์์ ํ์ด์ง๊ฐ ๋ง๋ค์ด์ง๋ ๊ฒ์ด ์๋๋ผ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ํ์ด์ง ์์ฒญ์ ๋ฐ์ ๋ ์๋ฒ์์ ๊ทธ ์์ฒญ๋ฐ์ ํ์ด์ง๊ฐ ๋ฐ๋ก ๋ง๋ค์ด์ง๋ ๊ฒ์ ๋งํ๋ค. ์ด๋ ๊ฒ ๋ง๋ค์ด์ง HTML ์ด ๋ธ๋ผ์ฐ์ ์์ ๋ก๋๋ ๋, ์ด ํ์ด์ง์ ํ์ํ JSํ์ผ์ด ์คํ๋์ด ํด๋น ํ์ด์ง๊ฐ interactive ํด์ง ์ ์๋๋ก ํ๋ค. ์ด ๊ณผ์ ์ Hydrate๋ผ๊ณ ํ๋ค. ์ฆ, Hydrate๋ Server Side ๋จ์์ ๋ ๋๋ง ๋ ์ ์ ํ์ด์ง์ ๋ฒ๋ค๋ง๋ JSํ์ผ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ธ ๋ค, ํด๋ผ์ด์ธํธ ๋จ์์ HTML ์ฝ๋์ React์ธ JS์ฝ๋๋ฅผ ์๋ก ๋งค์นญ ์ํค๋ ๊ณผ์ ์ ๋งํ๋ค. ๋ธ๋ผ์ฐ์ ์์ pre-render ๋ HTML ์ด ..
Next.js redirects ์ rewrites | API KEY ์จ๊ธฐ๊ธฐ
/** @type {import('next').NextConfig} */ const API_KEY = process.env.API_KEY; const nextConfig = { reactStrictMode: true, swcMinify: true, async redirects() { // ์ ์ ๊ฐ ์ ์ ์์. ๊ฒฝ๋ก๊ฐ ๋ฐ๊นฅ์ ๋๋ฌ๋จ. return [ { source: "/old-blog/:path*", destination: "/new-sexy/:path*", // ์ธ๋ถ๋ก๋ ๋ฆฌ๋ค์ด๋ ํธ ๊ฐ๋ฅ, * ๋ถ์ด๋ฉด ๋ค์ ๊ฒฝ๋ก ๋ชจ๋ ์ ์ง๋๋ฉด์ ๋ฆฌ๋ค์ด๋ ํธ permanent: false, // status code => false: 307(์์ ๋ฆฌ๋ค์ด๋ ํธ), true: 308(์๊ตฌ ๋ฆฌ๋ค์ด๋ ํธ) }, ]; }, async r..