๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
[Next.js] page router ์ฌ์ ๋ ๋๋ง๊ณผ ๋ฐ์ดํฐํ์นญ
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค. 2.10) ์ฌ์ ๋ ๋๋ง๊ณผ ๋ฐ์ดํฐํ์นญReact app ์์์ ๋ฐ์ดํฐ ํ์นญ๋ฆฌ์กํธ ์ฑ์ CSR๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋ง์ ์ง์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.๋ฐ๋ผ์ FCP ์์ ์ผ๋ก ์ค๊ธฐ๊น์ง๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๋ฆฌ์กํธ ์ฑ์์ ๋ฐ์ดํฐ ํ์นญ์ ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ๋ ์ดํ์ ์งํ๋๊ธฐ ๋๋ฌธ์ FCP ์ดํ์ ์ถ๊ฐ์ ์ธ ์๊ฐ์ด ์์๋๋ค.์ฆ, ๋ฐ์ดํฐ ์์ฒญ ์์ ์ด ๋๋ ค์ง๊ฒ ๋๋ ๋จ์ ๋ฐ์ Next.js์ ๋ค์ํ ์ฌ์ ๋ ๋๋ง1. ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ฌ์ ๋ ๋๋ง์ ๊ณผ์ ์ค์ ๋ฐ์ดํฐ ํจ์นญ์ ๋์์ ์ํํ ์ ์๋ค.๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ์์ ์ด ๋งค์ฐ ์์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์์๊ฒ ๋ฐ์ดํฐ ํจ์นญ์ด ์ด๋ฏธ ์๋ฃ๋ ์นํ์ด์ง๋ฅผ ์ถ๊ฐ์ ์ธ ๋ก๋ฉ ์์ด ๋ณด์ฌ์ค ์ ์๋ค.์ด๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ ๋ ๋๋ง ๋ฐฉ์์ด๊ณ ,..
[Next.js] page router ํ์ด์ง๋ณ ๋ ์ด์์ ์ค์
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค. 2.8) ํ์ด์ง๋ณ ๋ ์ด์์ ์ค์ ํ๊ธฐํ์ด์ง๋ณ๋ก ํน์ Layout ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํ๋ ๋ฐฉ๋ฒimport SearchableLayout from "@/components/searchable-layout";import style from "./index.module.css";import { ReactNode } from "react";export default function Home() { return ( ์ธ๋ฑ์ค H2 );}Home.getLayout = (page: ReactNode) => { return {page};}; ํ์ด์ง๋ง๋ค ํน์ Layout ์ปดํฌ๋ํธ๋ฅผ ์ ์ฉํด์ผ ํ ๋๊ฐ ์๋๋ฐ, ๊ทธ๋ด ๋๋ getLayout ๋ฉ..
[Next.js] page router - API Routes
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค. 2.5) API Routes2.5 API RoutesAPI Routs๋?Next.js ์ฑ์์ API๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ๋ง์น ๋ฐฑ์๋ API ์๋ฒ๊ฐ ํ๋ ์ผ๊ณ ๋์ผํ๊ฒ ๊ฐ๋จํ API๋ฅผ ๊ตฌ์ถํด์ ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์จ๋ค๋๊ฐ ์๋๋ฉด ๋ค๋ฅธ ์๋ํํฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์์ ์ ๋ฌ์ ํด์ค๋ค๋ ๋ฑ์ ๋์์ ๋ง๋ค ์ ์๋ค. API Routes ์ค์ตpages/api ์๋์ API ๊ฒฝ๋ก๋ก ๋ง๋ค๊ณ ์ถ์ ์ด๋ฆ์ผ๋ก ํ์ผ ๋ง๋ค์ด์ค๋ค. (ex api/time ์ผ๋ก ํ๊ณ ์ถ์ผ๋ฉด time.ts)import type { NextApiRequest, NextApiResponse } from "next";export default functi..
[Next.js] page router - ํ๋ฆฌํ์นญ
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค. 2.4) ํ๋ฆฌํ์นญ2.4 ํ๋ฆฌํ์นญํ๋ฆฌํ์นญ(Pre-Fetching)์ด๋?ํ์ฌ ๋ณด๊ณ ์๋ ํ์ด์ง์์ ๋งํฌ๋ค์ ํตํด ์ด๋ํ ์ ์๋ ๋ชจ๋ ํ์ด์ง๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฌ์ ์ ๋ฏธ๋ฆฌ ๋ค ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฅ ํ๋ฆฌํ์นญ์ด ํ์ํ ์ด์ ์ฌ์ ๋ ๋๋ง ํํธ์์ ์๋ Next.js์์ ์ด๊ธฐ ์ ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด ์๋ฒ๊ฐ ๋ธ๋ผ์ฐ์ ์๊ฒ html ํ์ด์ง๋ฅผ ์๋ตํ ์ดํ์ ํ์์ผ๋ก ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ฒ๋ค ํ์ผ ํํ๋ก ์ ๋ฌ์ ํด์ฃผ๊ณ , ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ฒ๋ค ํ์ผ ํํ๋ก ์ ๋ฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ์ด์ง ์ด๋์ด ๋ฐ์ํ์ ๋ ์๋ฒ์๊ฒ ๋ณ๋์ ์์ฒญ ์์ด ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํ์์ผ์(ํด๋ผ์ธ์ธํธ ์ฌ์ด๋ ๋ ๋๋ง) ์์์ ์ฒ๋ฆฌ๋ฅผ ํ๋ค๊ณ ํ๋ค. Next.js๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ค..
[Next.js] Page Router, ์ค์ , ๋ค๋น๊ฒ์ดํ
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค. 2.1) Page Router๋ฅผ ์๊ฐํฉ๋๋ค.2.2) ํ์ด์ง ๋ผ์ฐํ ์ค์ ํ๊ธฐ2.3) ๋ค๋น๊ฒ์ดํ 2.1 Page Router๋ฅผ ์๊ฐํฉ๋๋คPage Router ๋?๋ง์ ๊ธฐ์ ์์ ํ์ฉ๋๊ณ ์๋ ๊ฐ์ฅ ์์ ์ ์ธ ๋ผ์ฐํฐํน์ ์กฐ๊ฑด์ ๊ธฐ์ค์ผ๋ก ์น์๋น์ค ๋ด์ ํ์ด์ง๋ฅผ ๋ถํ ํ๊ณ ๋ ๊ทธ๋ ๊ฒ ๋ถํ ๋ ํ์ด์ง ๊ฐ์ ์ด๋์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ผ์ ์ด๋ฆ(ํน์ ํด๋์ ์ด๋ฆ)์ ๊ธฐ๋ฐ์ผ๋ก ํ์ด์ง ๋ผ์ฐํ ์ ์ ๊ณต ๋์ ๊ฒฝ๋ก/page/1, /page/2... ์ฒ๋ผ ๊ฐ๋ณ์ ์ธ ๊ฐ์ ํฌํจํ๊ณ ์๋ ๊ฒฝ๋ก(๋ธ๋ก๊ทธ ๊ฒ์๊ธ ์ฃผ์ ๋ฑ)/page ํด๋ ํ๋จ์ [id].js ๋ก ๋๊ดํธ๋ฅผ ํตํด ๋ง๋ค์ด์ค ์ ์๋ค. npx(node package execute)๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ค์ ๋ก ์ฌ๋ผ๊ฐ์๋ ์๋ฒ์ธ npmjs...
[Next.js] Next.js?
ํ ์ ํฌ๊ธฐ๋ก ์๋ผ๋จน๋ Next.js ํ์ต์ ๋ฆฌ์ฉ์ ๋๋ค. 1.1) Next.js๋ฅผ ์๊ฐํฉ๋๋ค.1.2) Next.js ์ฌ์ ๋ ๋๋ง ์ดํดํ๊ธฐ1.3) ์ค์ต์ฉ ๋ฐฑ์๋ ์๋ฒ ์ธํ ํ๊ธฐ1.4) ๋ณธ๊ฒฉ์ ์ธ ํ์ต์ ์์Next.js ๋ผ๋ ๊ธฐ์ ์ ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๋๊ฐ?Next.js- Next.js : ๋ฆฌ์กํธ๋ง์ ์ํ ๋ฆฌ์กํธ ์ ์ฉ์ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ ๊ธฐ์กด์ ๋ฆฌ์กํธ ๊ธฐ์ + ํ์ด์ง ๋ผ์ฐํ + ๋ค์ํ ์ต์ ํ ๊ธฐ๋ฅ ๋ฑ๋ฑ์ ์ถ๊ฐ ๊ธฐ๋ฅ๋ค์ ๋ช ๊ฐ ๋ง๋ถ์ฌ ๋์ ๋ฆฌ์กํธ์ ํ์ฅํ vercel์์ ๊ฐ๋ฐFramework vs LibraryNext.js๋ ๋ฆฌ์กํธ ์ ์ฉ์ ์น ๊ฐ๋ฐ ํ๋ ์์ํฌ์ด์ง๋ง, React๋ UI ๊ฐ๋ฐ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. 1. ๊ธฐ๋ฅ ๊ตฌํ์ ์ฃผ๋๊ถ์ด ๋๊ตฌ์๊ฒ ์๋๊ฐFramework : ์ฃผ๋๊ถ์ Framework๊ฐ ๊ฐ..
[๋ฆฌํฉํฐ๋ง 2ํ] ๋ฆฌํฉํฐ๋ง ์นดํ๋ก๊ทธ ๋ณด๋ ๋ฒ(ch5)
ch5 ๋ฆฌํฉํฐ๋ง ์นดํ๋ก๊ทธ ๋ณด๋ ๋ฒ๋ฆฌํฉํฐ๋ง ํ์- ์ด๋ฆ : ์ด๋ฆ์ ๋ฆฌํฉํฐ๋ง ์ฉ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ค์ํ๋ค. - ๊ฐ์ : ๋ฆฌํฉํ ๋ง์ ํต์ฌ ๊ฐ๋ -> ์ํ๋ ๋ฆฌํฉํฐ๋ง์ ์ฐพ์ ๋ ๋์ ๋ ๊ฒ์ด๋ค.- ๋ฐฐ๊ฒฝ : ๋ฆฌํฉํฐ๋ง ๊ธฐ๋ฒ์ด ์ ํ์ํ์ง, ๊ทธ ๊ธฐ๋ฒ์ ์ ์ฉํ๋ฉด ์ ๋๋ ์ํฉ์ ์ค๋ช - ์ ์ฐจ : ๋ฆฌํฉํฐ๋งํ๋ ๊ตฌ์ฒด์ ์ธ ๊ณผ์ - ์์ : ํด๋น ๋ฆฌํฉํฐ๋ง ๊ธฐ๋ฒ์ ์ค์ ๋ก ์ ์ฉํ๋ ๊ฐ๋จํ ์์ ํจ๊ณผ
[๋ฆฌํฉํฐ๋ง 2ํ] action point(ch4)
Ch4. ํ ์คํธ ๊ตฌ์ถํ๊ธฐํ ์คํธ๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์์ํ๊ธฐ ์ ์ ์์ฑํ๋ฉด ์ข์ ์ : ํ ์คํธ๋ฅผ ์์ฑํ๋ค ๋ณด๋ฉด ์ํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด ๋ฌด์์ด ํ์ํ์ง ๊ณ ๋ฏผํ๊ฒ ๋๋ฉฐ, ๊ตฌํ๋ณด๋ค ์ธํฐํ์ด์ค์ ์ง์คํ๊ฒ ๋๋ค. ๊ฒ๋ค๊ฐ ์ฝ๋ฉ์ด ์๋ฃ๋๋ ์์ ์ ์ ํํ๊ฒ ํ๋จํ ์ ์๋ค.TDD : ํ ์คํธ๋ฅผ ์์ฑํ๊ณ , ์ด ํ ์คํธ๋ฅผ ํต๊ณผํ๊ฒ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ๊ฒฐ๊ณผ ์ฝ๋๋ฅผ ์ต๋ํ ๊น๋ํ๊ฒ ๋ฆฌํฉํฐ๋งํ๋ ๊ณผ์ ์ ์งง๊ฒ ๋ฐ๋ณต.๋ฆฌํฉํฐ๋ง ํ๊ณ ์ถ๋ค๋ฉด ํ ์คํธ๊ฐ ๋ฐ๋์ ํ์ํ๋ค-> ๋ฐ๋ผ์ ํ ์คํธ๊ฐ ๊ฐ์ถฐ์ง์ง ์์ ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํด์ผ ํ๋ค๋ฉด, ๊ณง๋ฐ๋ก ๋ฆฌํฉํฐ๋ง ํ์ง ์๊ณ , ๋จผ์ ์๊ฐ ํ ์คํธ ์ฝ๋๋ถํฐ ์์ฑํด์ผ ํ๋ค.ํ ์คํธ ์์ฑ- ์คํจํด์ผ ํ ์ํฉ์์๋ ๋ฐ๋์ ์คํจํ๊ฒ ๋ง๋ค์. -> ์๋ง์ ํ ์คํธ๋ฅผ ์คํํ์์๋ ์คํจํ๋ ๊ฒ ์๋ค๋ฉด ํ ์คํธ๊ฐ ๋ด ์๋์๋ ๋ค๋ฅธ ๋ฐฉ..
[ํจ๊ป์๋ผ๊ธฐ] action point
ํจ๊ป ์๋ผ๊ธฐ ์ ์์ผ๋ก ๊ฐ๋ ๊ธธ(๊น์ฐฝ์ค)1. ์๋ผ๊ธฐ๋ฉํ ํน์ ์ฌ์๊ฐ ์๋ก ์๋ฐ๋ ์๊ฒฌ์ ์ค๋ค๋ฉด ์ด๋ฌํ ์๋ฐ๋ ์๊ฒฌ๊ณผ ์ ๋ณด ์์์ ์ค์ค๋ก ์๊ฐํ๋ ํ๋ จ์ ํด์ผ ํ๋ค.1๋ง ์๊ฐ์ ๋ฒ์น์์ 1๋ง ์๊ฐ์ ‘์์ ์ ๊ธฐ๋์ ํฅ์์ํฌ ๋ชฉ์ ์ผ๋ก ๋ฐ๋ณต์ ์ผ๋ก ํ๋ ์๋ จ’์ ํ ์๊ฐ์ด๋ค.์ ์์ผ ์ฒ ํ์ ํ์ฉํ์ฌ ์ผํ๋ ๋์ค์๋ ์๋์ ์๋ จ์ ํ ์ ์๋ค.์๊ธฐ๊ฐ ์ต๋ํ ์ง์์ด๋ ๋ฅ๋ ฅ์ ๋ณต๋ฆฌ๋ก ์ด์๊ฐ ๋ถ๋๋ค -> ์๊ธฐ๊ณ๋ฐ์ด ์ค์ํ๋ค.์ด๋ป๊ฒํ๋ฉด ๋ํ๊ธฐ๋ณด๋ค ๊ณฑํ๊ธฐ๋ฅผ ๋ ๋ง์ด ํ ์ ์์๊น?(๊ฐ์ฉ์๊ฐ์ ๋๋ฆฌ๊ณ ์ธ๋ฐ์์ด ๋ญ๋น๋๋ ์๊ฐ์ ์ค์ด๊ณ , ์ ์๋ ์๊ฐ์ ์ค์ด๋ ๊ฒ์ ๋ํ๊ธฐ์ ์ฌ๊ณ ์ด๋ฉฐ, ์ง๋จ์ ์ง๋ฅ์ ๋์ด๋ ๊ฒ์ด ๊ณฑํ๊ธฐ์ ์ฌ๊ณ ์ด๋ค) (39-40p)1. ์์ ์ด ์ด๋ฏธ ๊ฐ๊ณ ์๋ ๊ฒ๋ค์ ์ ํ์ฉํด์ผ ํ๋ค. ์๋ก์ด ๊ฒ์ ์ ์ ์ํค๋ ๋ฐ์๋ง ์ง..