nextjs
-
- [Next.js] <Link> ์ปดํฌ๋ํธ ํด๋ฆญ ์, ์ต์๋จ์ผ๋ก ์คํฌ๋กค ๋๋ ํ์ ๋ง๋ ๋ฐฉ๋ฒ
์ปดํฌ๋ํธ ํด๋ฆญ ์, ์ต์๋จ์ผ๋ก ์คํฌ๋กค ๋๋ ํ์ ๋ง๋ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐNext.js์ @@ ์ปดํฌ๋ํธ๋ฅผ ํด๋ฆญํ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋ฉด์ ์ต์๋จ์ผ๋ก ์คํฌ๋กค์ด ๋๋ค.์ด๋ฌํ ํ์์ ๋ง๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๊ฐ๋จํ๋ค. ๋ค์๊ณผ ๊ฐ์ด @@ ์ปดํฌ๋ํธ์ @scroll@ ์์ฑ์ ๊ฐ์ @false@๋ก ์ง์ ํด์ฃผ๋ฉด ๋๋ค.import Link from 'next/link'; Move ์ฐธ๊ณ ์ฌ์ดํธ | Next.js" data-og-description="Enable fast client-side navigation with the built-in `next/link` component." data-og-host="nextjs.org" data-og-source-url="https://nextjs.org/docs/app/api-refe..
2024.12.20 -
- [TypeScript] ํ๊ฒฝ ๋ณ์ ํ์ ์ค์ ํ๊ธฐ
ํ๊ฒฝ ๋ณ์ ํ์ ์ค์ ํ๊ธฐ๋ค์ด๊ฐ๋ฉฐํ์ ์คํฌ๋ฆฝํธ์์ ํ๊ฒฝ ๋ณ์(Environment Variable)์ ํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ์ ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒ๋ค์๊ณผ ๊ฐ์ ํ๊ฒฝ ๋ณ์ ํ์ผ์ด ์๋ค๊ณ ํด๋ณด์.์ด์ ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ํ๋ก์ ํธ ๋ด์ ๋ค๋ฅธ ํ์ผ์์ ๋ถ๋ฌ์์ ์ฌ์ฉํด๋ณผ ๊ฒ์ด๋ค. (Next.js ํ๋ ์์ํฌ ์ฌ์ฉ).env.localNEXT_PUBLIC_API_KEY="="***********"NEXT_PUBLIC_SPACE_ID="**************************" (1) @!@(Non-Null Assertion) ์ฐ์ฐ์ ์ฌ์ฉํ๊ธฐ@!@๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ด @undefined@๊ฐ ์๋์ ํ์ ์คํฌ๋ฆฝํธ์ ๋ช ์ํ๋ค.ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ํด๋น ํ๊ฒฝ ๋ณ์๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ, ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋..
3 2024.12.09 -
- [Next.js] Hydration ์๋ฌ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ (Next.js 15)
Hydration ์๋ฌ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ (Next.js 15)๋ค์ด๊ฐ๋ฉฐNext.js 15์์ ์์ฑํ ํ๋ก์ ํธ์์ ์๋์ ๊ฐ์ Hydration ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.Console ErrorHydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used- A server/client branch 'if (typeof window !== 'undefined')'.- Variable input such as 'Date.now()' ..
2024.11.21 -
- [Next.js] ๋ ๋๋ง ๋ฐฉ์ ์ ๋ฆฌ (CSR(Client Side Rendering), SSR(Server Side Rendering), SSG(Static Site Generation), ISR(Incremental Static Regeneration)๏ปฟ)
๋ ๋๋ง ๋ฐฉ์ ์ ๋ฆฌ (CSR(Client Side Rendering), SSR(Server Side Rendering), SSG(Static Site Generation), ISR(Incremental Static Regeneration))๋ค์ด๊ฐ๋ฉฐNext.js์ ๋ ๋๋ง ๋ฐฉ์์ธ CSR(Client Side Rendering), SSR(Server Side Rendering), SSG(Static Site Generation), ISR(Incremental Static Regeneration)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.Next.js์์ ํ์ด์ง๋ฅผ ์์ฑํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก CSR ๋ฐฉ์์ผ๋ก ๋ ๋๋ง๋๋ค. CSR(Client Side Rendering)๊ฐ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋ํ ํ, ํด๋ผ์ด์ธํธ ์ธก์์ ๋ ๋๋ง์ ..
14 2024.11.14 -
- [Next.js] ํ ๋ง ํ ๊ธ ๊ธฐ๋ฅ ์ค์ ํ๊ธฐ (with shadcn/ui)
ํ ๋ง ํ ๊ธ ๊ธฐ๋ฅ ์ค์ ํ๊ธฐ (with shadcn/ui)๋ค์ด๊ฐ๋ฉฐNext.js๋ฅผ ์ด์ฉํ์ฌ ํ ๋ง ํ ๊ธ ๊ธฐ๋ฅ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค.์ด ๊ฒ์๊ธ์ ๋ด์ฉ์ ํ์ ์คํฌ๋ฆฝํธ(TypeScript)์ shadcn UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐํ์ผ๋ก ์์ฑ๋์๋ค. ๋ฐฉ๋ฒโ ์์ ํ ํ๋ฆฟ ์ฝ๋๋ฅผ ์ ์ญ ์คํ์ผ์ํธ ํ์ผ(@globals.css@)์ ๋ฃ๊ธฐ์๋์ ์ฌ์ดํธ์์ ์์ ์๊ฒ ๋ง๋ ๋ผ์ดํธ/๋คํฌ ๋ชจ๋ ์์ ํ ํ๋ฆฟ์ ์ ํํ ํ, ์์ ์ฝ๋๋ฅผ ๋ณต์ฌํ๋ค. shadcn/uiBeautifully designed components that you can copy and paste into your apps. Accessible. Customizable. Open Source.ui.shadcn.com ๊ทธ๋ฆฌ๊ณ ์ ์ญ ์คํ์ผ์ํธ ํ์ผ(@/app/..
2024.11.05 -
- [Next.js] ๊ฐ์๊ธฐ "'next'์(๋) ๋ด๋ถ ๋๋ ์ธ๋ถ ๋ช ๋ น, ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ, ๋๋๋ฐฐ์น ํ์ผ์ด ์๋๋๋ค." ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ
๊ฐ์๊ธฐ "'next'์(๋) ๋ด๋ถ ๋๋ ์ธ๋ถ ๋ช ๋ น, ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ, ๋๋๋ฐฐ์น ํ์ผ์ด ์๋๋๋ค." ์ค๋ฅ๊ฐ ๋ฐ์ํ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐNext.js ํ๋ก์ ํธ ์๋ฒ๋ฅผ ์คํํ ๋, ๊ฐ์๊ธฐ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.$ yarn devyarn run v1.22.22$ next dev'next'์(๋) ๋ด๋ถ ๋๋ ์ธ๋ถ ๋ช ๋ น, ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ, ๋๋๋ฐฐ์น ํ์ผ์ด ์๋๋๋ค.error Command failed with exit code 1.info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. ์ด๋, ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. ์บ์๋ฅผ ์ง์์ค ํ, ํ๋ก์ ..
2024.10.30 -
- [Next.js] ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ ๋ฐฉ๋ฒ
ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ ๋ฐฉ๋ฒ๋ค์ด๊ฐ๋ฉฐNext.js์์ ํ๊ฒฝ ๋ณ์(Environment Variable)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒโ ํ๊ฒฝ ๋ณ์ ํ์ผ ์ค์ ํ๊ธฐNext.js๋ @.env@ ํ์ผ์ ํตํด ํ๊ฒฝ ๋ณ์๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋ค.ํ๋ก์ ํธ ์ต์์ ๊ฒฝ๋ก(@/@)์ ๋ค์๊ณผ ๊ฐ์ @.env@ ํ์ผ์ ์์ฑํ๋ค. /.env.localNEXT_PUBLIC_API_URL=https://api.example.comAPI_SECRET_KEY=your-secret-key ⇒ ๋ค์๊ณผ ๊ฐ์ด @.env@๋ค์ ์ฉ๋์ ๋ฐ๋ผ ๋ค์ํ ์ ๋ฏธ์ด๋ฅผ ๋ถ์ผ ์ ์๋ค. ํ๊ฒฝ๋ณ์ ํ์ผ๋ช ์ค๋ช @.env.local@๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ํ๊ฒฝ ๋ณ์ (Git์ ์ถ๊ฐํ์ง ์๋ ๊ฒ์ด ์ข๋ค.)@.env.development@๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฌ์ฉํ๋ ํ๊ฒฝ ๋ณ์@..
1 2024.10.29 -
- [React.js] Clerk
Clerk๋ค์ด๊ฐ๋ฉฐNext.js ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ(Authentication) ๋ฐ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๋์์ฃผ๋ Clerk ์๋น์ค์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค.์ด ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด, ์์ ๋ก๊ทธ์ธ ๋ฑ ์ธ์ฆ์ ์ํ ๊ธฐ๋ฅ๋ค์ ์ง์ ์ฝ๋๋ก ๊ตฌํํ์ฌ ๋ง๋ค์ด์ฃผ์ง ์์๋ ๋๋ค. Clerk๊ฐ๋ Next.js ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ธ์ฆ(Authentication) ๋ฐ ์ฌ์ฉ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ๋๋ ์๋น์ค์์ ๋ก๊ทธ์ธ, ๋ฉํฐํฉํฐ ์ธ์ฆ(MFA), ์ธ์ ๊ด๋ฆฌ ๋ฑ์ ๊ธฐ๋ณธ ์ ๊ณตํ๋ค.Next.js์ ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ๊ณผ๋ ์ ๋ง๊ธฐ ๋๋ฌธ์ API ๋ผ์ฐํธ์ ๋ฏธ๋ค์จ์ด์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.Clerk์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ์์ ๋ก๊ทธ์ธ(Google, Facebook, GitHub ๋ฑ) ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค. ํ์๊ฐ์ ๋ฐ ํ๋ก์ ํธ ์์ฑ Cler..
2024.10.28 -
- [Next.js] ํด๋ ๊ตฌ์กฐ ๋ฐ ๋์ ๊ฒฝ๋ก ์ค์ ํ๊ธฐ
ํด๋ ๊ตฌ์กฐ ๋ฐ ๋์ ๊ฒฝ๋ก ์ค์ ํ๊ธฐ๋ค์ด๊ฐ๋ฉฐNext.js๋ฅผ ์ด์ฉํ์ฌ ํด๋ ๊ตฌ์กฐ ๋ฐ ๋์ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณธ๋ค. ๋ฐฉ๋ฒโ ๋น๊ณต๊ฐ ํด๋(Private Folder) ์์ฑํ๊ธฐ์ฑ(@app@) ํด๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก URL ์ธ๊ทธ๋จผํธ๊ฐ ๋๋ค.๋น๊ณต๊ฐ ํด๋(Private Folder)๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ, ํด๋ ์ด๋ฆ ์์ ๋ฐ์ค(@_@)์ ์ถ๊ฐํ๋ค._css ⇒ @_css@ ํด๋ ์์ฑ ์, ํด๋น ํด๋๋ URL ์ธ๊ทธ๋จผํธ๋ก ๋ ธ์ถ๋์ง ์์ผ๋ฉฐ, ๋ง์ฝ ํด๋น ๊ฒฝ๋ก์ ์ ์ํ ๊ฒฝ์ฐ 404 ํ์ด์ง๋ฅผ ๋ฐํํ๋ค. ๋น๊ณต๊ฐ ํด๋๋ ๋ผ์ฐํ ์ ์ง์ ํฌํจ๋์ง ์๋ ํด๋์ด๋ค.์ผ๋ฐ์ ์ผ๋ก ๋ด๋ถ ๊ด๋ฆฌ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค. โก ๋ผ์ฐํธ ๊ทธ๋ฃน(Route Group) ์์ฑํ๊ธฐ๋ผ์ฐํธ ๊ทธ๋ฃน(Route Group)์ ํน์ ํ์ด์ง๋ ๊ฒฝ๋ก๋ฅผ ๊ทธ๋ฃนํํ๋ค.์ด๋ฌํ ๊ทธ๋ฃน์ ์ด๋ฆ..
2024.10.16 -
- [Next.js] ์ ์ ์์ฑ(Static Generation)๊ณผ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง(Server-side Rendering)
์ ์ ์์ฑ(Static Generation)๊ณผ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง(Server-side Rendering)๋ค์ด๊ฐ๋ฉฐ์ฌ์ ๋ ๋๋ง ๋ฐฉ๋ฒ์ธ ์ ์ ์์ฑ(Static Generation)๊ณผ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง(Server-side Rendering)์ ๋ํด ์ ๋ฆฌํด๋ณธ๋ค. ์ ์ ์์ฑ(Static Generation)๊ฐ๋ ์น ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ์ฌ HTML ํ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ์์น ์ฌ์ดํธ์ ๋น๋ ๋จ๊ณ์์ ๋ชจ๋ ํ์ด์ง๊ฐ ์ฌ์ ์ ๋ ๋๋ง๋๋ฉฐ, ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์์ฒญํ ๋ ์๋ฒ์์ ๋ฏธ๋ฆฌ ์์ฑ๋ HTML ํ์ผ์ ์ฆ์ ์ ๊ณตํ๋ ๋ฐฉ์๋น ๋ฅธ ๋ก๋ฉ ์๋์ ์๋ฒ ๋ถํ ๊ฐ์๋ฅผ ์ํด ์ฌ์ฉSSG(Static Site Generation)์ด๋ผ๊ณ ๋ ํ๋ค. ์ฅ์ ํ์ด์ง๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ผ๋ฏ๋ก, ์ฌ์ฉ์๋ ๋น ๋ฅด๊ฒ ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค. (๋น ๋ฅธ ํ์ด์ง ๋ก๋ฉ)์์ฒญ..
2024.08.08