콘텐츠로 이동

다음 것.js Cheatsheet

Next.js - 생산용 React Framework

Next.js는 웹 애플리케이션을 만들기 위해 블록을 구축하는 React Framework입니다. Framework에 의해 Next.js는 React에 필요한 툴링 및 구성을 처리하고 응용 프로그램에 대한 추가 구조, 기능 및 최적화를 제공합니다.

본문 바로가기

설치하기

자주 묻는 질문

카지노사이트

Next.js 앱 만들기

카지노사이트

수동 설치

카지노사이트

Package.json 스크립트

카지노사이트

프로젝트 생성

사용 가능한 템플릿

카지노사이트

개발 서버

카지노사이트

건설 및 생산

카지노사이트

프로젝트 구조

앱 라우터 구조 (Next.js 13+)

카지노사이트

페이지 라우터 구조 (Legacy)

카지노사이트

로그아웃

앱 라우터 (Next.js 13+)

파일 기반 Routing

카지노사이트

동 노선

ο 회원 관리

Catch-all 노선

카지노사이트

- 연혁

카지노사이트

노선 그룹 및 병렬 노선

카지노사이트

페이지 및 레이아웃

루트 레이아웃

카지노사이트

연락처

카지노사이트

페이지 구성

카지노사이트

로드 및 오류 미국

카지노사이트

API 경로

앱 라우터 API 루트

카지노사이트

동적 API 경로

오프화이트

기타 제품

카지노사이트

API 오류 처리

오프화이트

자료 Fetching

Server 구성 요소 (기본값)

카지노사이트

고객 구성

카지노사이트

정체되는 위치 발생 (SSG)

카지노사이트

공전 재생 (ISR)

카지노사이트

사이트맵

사이트맵 모듈

카지노사이트

카지노사이트

꼬리바람 CSS

```bash

Install Tailwind CSS

npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p ```의 경우

javascript // tailwind.config.js /** @type {import('tailwindcss').Config} */ module.exports = { content: [ './pages/**/*.{js,ts,jsx,tsx,mdx}', './components/**/*.{js,ts,jsx,tsx,mdx}', './app/**/*.{js,ts,jsx,tsx,mdx}', ], theme: { extend: { colors: { primary: '#3b82f6', secondary: '#64748b', }, }, }, plugins: [], };에 대하여

```css / app/globals.css / @tailwind base; @tailwind components; @tailwind utilities;

@layer components { .btn-primary { @apply bg-primary text-white px-4 py-2 rounded hover:bg-blue-600; } } ```의 경우

Styled 부품

```bash

Install styled-components

npm install styled-components npm install -D @types/styled-components ```에 대하여

```typescript // components/Button.tsx import styled from 'styled-components';

const StyledButton = styled.button<{ variant?: 'primary' | 'secondary' }>` padding: 0.5rem 1rem; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 500;

${props => props.variant === 'primary' && ` background-color: #3b82f6; color: white;

&:hover {
  background-color: #2563eb;
}

`}

${props => props.variant === 'secondary' && ` background-color: #6b7280; color: white;

&:hover {
  background-color: #4b5563;
}

};

export default function Button({ children, variant = 'primary', ...props }) { return ( {children} ); } ```의 경우

Emotion을 가진 CSS-in-JS

카지노사이트

카지노사이트

이미지 최적화

Next.js 이미지 구성 요소

카지노사이트

이미지 구성

카지노사이트

주문 이미지 로더

카지노사이트

성능 최적화

번들 분석

카지노사이트

코드 분할

```typescript // Dynamic imports import dynamic from 'next/dynamic';

const DynamicComponent = dynamic(() => import('../components/HeavyComponent'), { loading: () =>

Loading...

, ssr: false, // Disable server-side rendering });

// Conditional loading const ConditionalComponent = dynamic( () => import('../components/ConditionalComponent'), { ssr: false } );

export default function Page() { const [showComponent, setShowComponent] = useState(false);

return (

{showComponent && }
); } ```의 경우

Lazy 선적

```typescript import { lazy, Suspense } from 'react';

const LazyChart = lazy(() => import('../components/Chart'));

export default function Dashboard() { return (

Dashboard

Loading chart...\
}>
); } ```의 경우

성능 모니터링

카지노사이트

캐싱 전략

```typescript // Static data caching const getData = cache(async () => { const res = await fetch('https://api.example.com/data'); return res.json(); });

// Request memoization import { unstable_cache } from 'next/cache';

const getCachedData = unstable_cache( async (id) => { const data = await fetchData(id); return data; }, ['data-cache'], { revalidate: 3600 } // 1 hour ); ```의 경우

인증현황

NextAuth.js 설정

```bash

Install NextAuth.js

npm install next-auth ```를 호출합니다.

```typescript // app/api/auth/[...nextauth]/route.ts import NextAuth from 'next-auth'; import GoogleProvider from 'next-auth/providers/google'; import CredentialsProvider from 'next-auth/providers/credentials';

const handler = NextAuth({ providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }), CredentialsProvider({ name: 'credentials', credentials: { email: { label: 'Email', type: 'email' }, password: { label: 'Password', type: 'password' } }, async authorize(credentials) { // Verify credentials const user = await verifyCredentials(credentials); return user ? { id: user.id, email: user.email } : null; } }) ], callbacks: { async jwt({ token, user }) { if (user) { token.id = user.id; } return token; }, async session({ session, token }) { session.user.id = token.id; return session; }, }, pages: { signIn: '/auth/signin', signUp: '/auth/signup', }, });

export { handler as GET, handler as POST }; ```의 경우

세션 관리

```typescript // components/AuthProvider.tsx 'use client';

import { SessionProvider } from 'next-auth/react';

export default function AuthProvider({ children, session, }: { children: React.ReactNode; session: any; }) { return {children}; }

// app/layout.tsx import AuthProvider from '../components/AuthProvider';

export default function RootLayout({ children }) { return ( {children} ); } ```로

보호된 노선

카지노사이트

Database 통합

Prisma 설치

오프화이트

카지노사이트

__CODE_BLOCK_49_로그

Database 운영

카지노사이트

API 통합

```typescript // app/api/posts/route.ts import { NextRequest, NextResponse } from 'next/server'; import { getPosts, createPost } from '../../../lib/posts';

export async function GET() { try { const posts = await getPosts(); return NextResponse.json(posts); } catch (error) { return NextResponse.json( { error: 'Failed to fetch posts' }, { status: 500 } ); } }

export async function POST(request: NextRequest) { try { const body = await request.json(); const post = await createPost(body); return NextResponse.json(post, { status: 201 }); } catch (error) { return NextResponse.json( { error: 'Failed to create post' }, { status: 500 } ); } } ```를 호출합니다.

계정 만들기

Vercel 배포

```bash

Install Vercel CLI

npm install -g vercel

Deploy to Vercel

vercel

Deploy to production

vercel --prod

Set environment variables

vercel env add VARIABLE_NAME ```의 경우

카지노사이트

Docker 배포

카지노사이트

정적 수출

```javascript // next.config.js /* @type {import('next').NextConfig} / const nextConfig = { output: 'export', trailingSlash: true, images: { unoptimized: true } };

module.exports = nextConfig; ```로

카지노사이트

제품정보

Jest 및 React 테스트 라이브러리

카지노사이트

카지노사이트

javascript // jest.setup.js import '@testing-library/jest-dom';

구성 요소 테스트

```typescript // tests/components/Button.test.tsx import { render, screen, fireEvent } from '@testing-library/react'; import Button from '../components/Button';

describe('Button', () => { it('renders button with text', () => { render(); expect(screen.getByRole('button')).toHaveTextContent('Click me'); });

it('calls onClick when clicked', () => { const handleClick = jest.fn(); render();

fireEvent.click(screen.getByRole('button'));
expect(handleClick).toHaveBeenCalledTimes(1);

});

it('applies correct variant styles', () => { render(); expect(screen.getByRole('button')).toHaveClass('btn-primary'); }); }); ```의 경우

API 테스트

카지노사이트

사이트맵 Playwright와 테스트

카지노사이트

```typescript // tests/e2e/home.spec.ts import { test, expect } from '@playwright/test';

test('homepage loads correctly', async ({ page }) => { await page.goto('/');

await expect(page).toHaveTitle(/My App/); await expect(page.getByRole('heading', { name: 'Welcome' })).toBeVisible(); });

test('navigation works', async ({ page }) => { await page.goto('/');

await page.getByRole('link', { name: 'About' }).click(); await expect(page).toHaveURL('/about'); await expect(page.getByRole('heading', { name: 'About' })).toBeVisible(); }); ```의 경우

문제 해결

일반적인 문제

Hydration 운동

카지노사이트

메모리 누출

카지노사이트

오류 수정

카지노사이트

성능 문제

카지노사이트

최고의 연습

프로젝트 구조

카지노사이트

성과 모범 사례

카지노사이트

사이트 맵 최고의 연습

```typescript // Metadata API export const metadata = { title: 'My Page', description: 'Page description', keywords: ['next.js', 'react', 'javascript'], authors: [{ name: 'John Doe' }], openGraph: { title: 'My Page', description: 'Page description', images: ['/og-image.jpg'], }, twitter: { card: 'summary_large_image', title: 'My Page', description: 'Page description', images: ['/twitter-image.jpg'], }, };

// Dynamic metadata export async function generateMetadata({ params }) { const post = await fetchPost(params.id);

return { title: post.title, description: post.excerpt, }; } ```의 경우

보안 모범 사례

카지노사이트


제품정보

Next.js는 현대 웹 애플리케이션 구축을위한 완벽한 솔루션을 제공하는 강력한 React Framework입니다. 주요 특징은 다음을 포함합니다:

  • App Router: 레이아웃, 로드 상태, 오류 경계를 가진 새로운 라우팅 시스템
  • Server Components: 더 나은 성능을 위해 서버의 구성 요소 렌더링
  • API Routes: 내장 API 엔드포인트(Full-stack) 기능
  • ** 이미지 최적화 **: 자동 이미지 최적화 및 게으른 로딩
  • Performance: Core Web Vitals용 내장 최적화
  • Deployment: Vercel 및 기타 플랫폼의 원활한 배포

최적의 결과를 위해 Server 구성품을 기본적으로 활용하고, 클라이언트 구성품을 사용하여 적절한 캐싱 전략을 구현하고, 다음을 따르십시오. routing 및 data fetching.

<문서> 기능 copyToClipboard () 이름 * const 명령어 = document.querySelectorAll('code'); let allCommands = ''; 명령. forEach(cmd =>의 경우 모든Commands +=cmd.textContent + navigator.clipboard.write텍스(allCommands); alert('모든 명령은 클립보드에 복사!'); 이름 *

함수 생성PDF() { 창. 인쇄 (); 이름 *