๐ ๋ค์ด๊ฐ๋ฉฐ Next.js 14๋ฒ์ app router ํ๋ก์ ํธ์ styled-comoponents์์ vanilla-extarct๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํจ์ ์์ด์ ๋คํฌ๋ชจ๋ ๊ธฐ๋ฅ๋ ๊ฐ์ด ์งํํ๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒ ๋คํฌ๋ชจ๋๋ฅผ ์ ์ฉํ๋ฉด์ next-themes๋ฅผ ํ์ฉํด ๋ดค๋ ๋ฐ ์ฌ์ฉ ๊ฒฝํ์ด ๋งค์ฐ ์ข์์ต๋๋ค. ๋ํ, app router์์ vanilla-extract๋ก ๋คํฌ๋ชจ๋๋ฅผ ๊ตฌํํจ์ ์์ด์ ์ฐธ๊ณ ์๋ฃ๊ฐ ๋ง์ง ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์๊ธฐ ๋๋ฌธ์ ๊ธ์ ์์ฑํ๋ ค ํฉ๋๋ค. ๊ทธ๋ผ ์ด์ Next.js app router์์ vanilla-extract + next-themes๋ฅผ ํ์ฉํ ๋คํฌ๋ชจ๋๋ฅผ ํ๋ฒ ๊ตฌํํด ๋ด ์๋ค. ๐ง next-themes ์๊ฐ https://github.com/pacocoursey/next-them..
๐ ๋ค์ด๊ฐ๋ฉฐ ๊ธฐ์กด ํ๋ก์ ํธ์์ Next.js 14๋ฒ์ ์ ์ฑ ๋ผ์ฐํฐ์์ styled-components๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์ด์ ์ Next.js 11๋ฒ์ ์์ 14๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋ฉด์ ๋จ์์๋ ๋ถ๋ถ์ด์์ต๋๋ค. ์ฑ ๋ผ์ฐํฐ์์ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ๊ธฐ ์์ํ๋ฉด์, ์๋ฒ ์ปดํฌ๋ํธ ํ์ฉ ํด๋ณด๊ณ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ์ต๋๋ค. ๊ทธ๋ผ ๋จผ์ ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๊ณ , ์ vanilla-extract๋ฅผ ์ ํํ๋์ง ๊ฐ๋ตํ ์ค๋ช ํด ๋ณผ๊ฒ์. ๐ ์ฑ ๋ผ์ฐํฐ(app router)์์ styled-components์ ๋ฌธ์ ์ styled-components๋ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, styled-components๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด 'use client'๋ฅผ ๋ช ์ํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉํด..
๐ ๋ค์ด๊ฐ๋ฉฐ Next.js 13 ๋ฒ์ ์ดํ์๋ Rust ์ธ์ด๋ก ๊ฐ๋ฐ๋ Turbopack์ด ๋์ ๋์์ต๋๋ค. Next 14 ๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๊ณ Turbopack์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์ ์คํํ์ ๋ ๋ง์ดํ ๋ฌธ์ ์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํฉ๋๋ค. ๋ฌธ์ ๋ฐ์ โ Turbopack์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์ ์คํํ์ ์๋์ ๊ฐ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด ์ค๋ฅ์ ๋ํด ๊ฒ์ํด ๋ณด๋ "์ปดํฌ๋ํธ์ ์ด๋ฆ์ด ์๋ชป๋์๊ฑฐ๋, import ๊ฒฝ๋ก๊ฐ ์๋ชป ์ ๋ ฅ๋์์ ๋ ๋ฐ์ํ๋ค"๋ ์ค๋ช ์ ์ฐพ์ ์ ์์์ต๋๋ค. ์ด์ ๋ฐ๋ผ import ๋ ๋ถ๋ถ์ ์ ํ์ธํด ๋ณด๋ผ๋ ์กฐ์ธ์ด ์์์ต๋๋ค. ๊ทธ๋ฌ๋, ์ ์ฝ๋์์๋ import๊ฐ ์ ์์ ์ผ๋ก ์ด๋ฃจ์ด์ก๊ธฐ ๋๋ฌธ์ ์์ ํ ๋ถ๋ถ์ด ์์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ค์ ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ 'DarkModeBtn' ์ปดํฌ๋..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ต๊ทผ Next.14 ๋ฒ์ app router๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ์งํํ๋ฉด์ ์นด์นด์คํก ๊ณต์ ํ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ์์ด์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๊ณผ ์ฌ๋ฌ ์ค๋ฅ๋ฅผ ๋ง์ดํ์ฌ ์๋กญ๊ฒ ํฌ์คํ ํฉ๋๋ค. ์ด์ ํฌ์คํ ์์ 1๋ฒ ~ 1-3๋ฒ๊น์ง๋ ๋ฐฉ๋ฒ์ด ๋์ผํฉ๋๋ค. ์ด์ ํฌ์คํ ์ ์ฐธ๊ณ ํด์ ํ๋ซํผ ๋ฑ๋ก๊น์ง ํ๊ณ ์ฝ์ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. app router์์๋ _document.tsx์ _app.tsx๊ฐ ์ฌ๋ผ์ง๊ณ ์ด์ ์ ํด๋น ํ์ผ์์ ์์ฑ๋์๋ ์ฝ๋๋ layout.tsx์์ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ ์ปดํฌ๋ํธ ์์ฑ ์นด์นด์ค ๋๋ฒจ๋กํผ์์ ํ๋ซํผ ๋ฑ๋ก์ ์๋ฃํ๋ค๋ฉด ์ด์ ํ๋ก์ ํธ๋ก ๋์์์ ์ ์ฉ์ ํด๋ด ์๋ค. ๋จผ์ KakaoScript.tsx ํ์ผ์ ์์ฑํ๊ณ ์๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ํ์ผ ์์น๋ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ง๊ฒ ์์ฑํ์๋ฉด ๋ฉ..
๐๋ค์ด๊ฐ๋ฉฐ ์ฝ 2๋ ์ Next.js(SSG) + TypeScript๋ก ์ ์ํ ๋กค MBTI ํ๋ก์ ํธ๋ฅผ 14 ๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๊ณผ์ ๋ฐ ํ๊ธฐ๋ฅผ ์์ฑํด๋ณด๋ ค ํ๋ค. ํด๋น ๊ธ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ด๋ป๊ฒ ํ๋ ๊ฐ์ ๋ํ ๊ธ์ด ์๋๋๋ค. ์ ๋ชฉ ๊ทธ๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๋ ๊ณผ์ ์ ๊ธฐ๋กํ๋ ๊ธ์ ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ ์ ํด์ผ ํ๋๊ฐ? ์ฌ์ค ์๋น์ค ์์ฒด๋ก๋ ๋ฌธ์ ์์ด ์ ๋์๊ฐ๊ณ ์์๋ค. ๋์ ์ Next.js๋ก ์ง์ A - Z๊น์ง ํด๋ณธ ํ๋ก์ ํธ๋ ๋กค MBTI ํ๋ก์ ํธ๋ฐ์ ์์๋ค. Next.js๊ฐ 11๋ฒ์ ์ ๋นํด 14 ๋ฒ์ ๊น์ง(ํนํ 13 ๋ฒ์ ์์) ๋ง์ ๋ถ๋ถ์ด ๋ณ๊ฒฝ์ด ๋๊ณ , ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง ์ง์ ๋ถ๋ชํ๋ฉฐ ๊นจ๋ฌ์ผ๋ฉฐ ํ์ตํ๋ ๋ฐฉ์์ผ๋ก ์ง์์ ํก์ํ๋ ๋์ ์ฑํฅ์ธ ์ด์ ์ ์ต์ ๋ฒ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ฉด์ ๊ธฐ์กด ์ฝ๋์๋ ..
๐ ๋ค์ด๊ฐ๋ฉฐ ์ด ํฌ์คํ ์ Next.js 11 ๋ฒ์ (page router) ํ๊ฒฝ์์ ์์ฑ๋ ๊ธ์ ๋๋ค. 13๋ฒ์ ์ดํ app router ํ๊ฒฝ์์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ด ํฌ์คํ ์์ 1 ~ 1-3๊น์ง๋ง ๋ณด์๊ณ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์. Next.js + Typescript ํ๊ฒฝ์์ ํ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์ค ์นด์นด์คํก์ผ๋ก ๊ณต์ ํ๊ธฐ ๊ธฐ๋ฅ์ด ํ์ํด์ ๊ตฌํ์ ํ์๋๋ฐ, ๋ช๋ช ์ค๋ฅ๋ ๋ง์ฃผ์น๊ณ ๋ฐ๋ก ์ ๋ฆฌ๋ฅผ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ด๋ ๊ฒ ์ ๋ฆฌํ๊ฒ ๋ฉ๋๋ค. 1. ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋กํ๊ธฐ ์ผ๋จ ์ฒซ ๋ฒ์งธ๋ก ๊ฐ๋ฐํ๊ธฐ์ ์์์ Kakao Developers์์ ์ดํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก์ ํด์ค์ผ ํฉ๋๋ค. 1-1 ๋ก๊ทธ์ธ ์ฌ์ดํธ์ ์ ์ ํด์ฃผ์๊ณ ์ฒซ ํ๋ฉด์์ ๋ก๊ทธ์ธ์ ํด์ฃผ์๊ณ '๋ด ์ ํ๋ฆฌ์ผ์ด์ '์ ํด๋ฆญํด์ฃผ์ธ์. 1-2 ์ ํ๋ฆฌ์ผ์ด์ ์ถ๊ฐํ๊ธฐ ๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ์ ..