跳到主要内容
知仓学习社ZHICANG

nextjs-best-practices

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

不碰外部(只输出文字)无严重或高危命中sickn33/agentic-awesome-skills

它会碰到什么

扫了多少1 个文本文件,4 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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.

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

同名技能的其他版本

有 4 个不同仓库或目录里都有叫 nextjs-best-practices 的技能。它们内容并不相同,别混用: