搜索

PythonReactSEOPDF
GitHub Skill

nextjs-best-practices

Next.js App Router principles. Server Components, data fetching, routing patterns.

whodaniel☆ 2 仓库 Stars0 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Next.js Best Practices

Principles for Next.js App Router development.


1. Server vs Client Components

Decision Tree
Does it need...?
│
├── useState, useEffect, event handlers
│   └── Client Component ('use client')
│
├── Direct data fetching, no interactivity
│   └── Server Component (default)
│
└── Both? 
    └── Split: Server parent + Client child
By Default
Type Use
Server Data fetching, layout, static content
Client Forms, buttons, interactive UI

2. Data Fetching Patterns

Fetch Strategy
Pattern Use
Default Static (cached at build)
Revalidate ISR (time-based refresh)
No-store Dynamic (every request)
Data Flow
Source Pattern
Database Server Component fetch
API fetch with caching
User input Client state + server action

3. Routing Principles

File Conventions
File Purpose
page.tsx Route UI
layout.tsx Shared layout
loading.tsx Loading state
error.tsx Error boundary
not-found.tsx 404 page
Route Organization
Pattern Use
Route groups (name) Organize without URL
Parallel routes @slot Multiple same-level pages
Intercepting (.) Modal overlays

4. API Routes

Route Handlers
Method Use
GET Read data
POST Create data
PUT/PATCH Update data
DELETE Remove data
Best Practices
  • Validate input with Zod
  • Return proper status codes
  • Handle errors gracefully
  • Use Edge runtime when possible

5. Performance Principles

Image Optimization
  • Use next/image component
  • Set priority for above-fold
  • Provide blur placeholder
  • Use responsive sizes
Bundle Optimization
  • Dynamic imports for heavy components
  • Route-based code splitting (automatic)
  • Analyze with bundle analyzer

6. Metadata

Static vs Dynamic
Type Use
Static export Fixed metadata
generateMetadata Dynamic per-route
Essential Tags
  • title (50-60 chars)
  • description (150-160 chars)
  • Open Graph images
  • Canonical URL

7. Caching Strategy

Cache Layers
Layer Control
Request fetch options
Data revalidate/tags
Full route route config
Revalidation
Method Use
Time-based revalidate: 60
On-demand revalidatePath/Tag
No cache no-store

8. Server Actions

Use Cases
  • Form submissions
  • Data mutations
  • Revalidation triggers
Best Practices
  • Mark with 'use server'
  • Validate all inputs
  • Return typed responses
  • Handle errors

9. Anti-Patterns

❌ Don't ✅ Do
'use client' everywhere Server by default
Fetch in client components Fetch in server
Skip loading states Use loading.tsx
Ignore error boundaries Use error.tsx
Large client bundles Dynamic imports

10. Project Structure

app/
├── (marketing)/     # Route group
│   └── page.tsx
├── (dashboard)/
│   ├── layout.tsx   # Dashboard layout
│   └── page.tsx
├── api/
│   └── [resource]/
│       └── route.ts
└── components/
    └── ui/

Remember: Server Components are the default for a reason. Start there, add client only when needed.

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-26
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!