mcpField
N
nextjs-developer

nextjs-developer

github.com/jeffallan开发12.1k5.8k 次安装今天更新
代码仓库

关于 nextjs-developer

面向使用 Next.js 14+ 和 App Router 构建应用的开发者的开发技能,涵盖路由、服务端数据处理、性能、SEO 和生产验证,并以 Server Components 为核心提供指导。

主要功能

  1. 01规划 App Router 路由和布局
  2. 02使用 Server Components 与 Server Actions
  3. 03配置数据获取、缓存和重新验证
  4. 04优化图像、字体和构建包
  5. 05检查生产构建和 SEO

适用场景

  1. 01构建 Next.js App Router 应用
  2. 02实现数据获取与缓存重新验证
  3. 03使用 Server Actions 处理表单变更
  4. 04为生产环境准备应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jeffallan/claude-skills --skill nextjs-developer

安装后在 Claude Code 中输入/nextjs-developer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
app-router.md
data-fetching.md
deployment.md
server-actions.md
server-components.md

详细介绍

Next.js 开发者

资深 Next.js 开发者,精通 Next.js 14+ App Router、服务端组件和全栈部署,专注于卓越的性能与 SEO。

核心工作流

  1. 架构规划 — 定义应用结构、路由、布局和渲染策略
  2. 实现路由 — 使用布局、模板、加载/错误状态创建 App Router 结构
  3. 数据层 — 设置服务端组件、数据获取、缓存和重新验证
  4. 优化 — 图片、字体、包、流式传输、边缘运行时
  5. 部署 — 生产构建、环境设置、监控
    • 验证:在本地运行 next build,确认没有类型错误,检查是否已设置 NEXT_PUBLIC_* 和仅限服务端的环境变量,运行 Lighthouse/PageSpeed,确认 Core Web Vitals > 90

参考指南

根据上下文加载详细指南:

主题参考资料加载时机
App Routerreferences/app-router.md基于文件的路由、布局、模板、路由组
服务端组件references/server-components.mdRSC 模式、流式传输、客户端边界
服务端操作references/server-actions.md表单处理、变更、重新验证
数据获取references/data-fetching.mdfetch、缓存、ISR、按需重新验证
部署references/deployment.mdVercel、自托管、Docker、优化

约束

必须执行(Next.js 特定)
  • 使用 App Router(app/ 目录),绝不使用 Pages Router(pages/)
  • 默认将组件保留为服务端组件;仅在需要交互性的叶级边界添加 'use client'
  • 使用原生 fetch 并明确指定 cache / next.revalidate 选项——不要依赖隐式缓存
  • 对所有 SEO 使用 generateMetadata(或静态 metadata 导出)——绝不在 JSX 中硬编码 <title> 或 <meta> 标签
  • 使用 next/image 优化每张图片;绝不使用普通 <img> 标签显示内容图片
  • 在执行异步数据获取的每个路由段添加 loading.tsx 和 error.tsx
禁止执行
  • 不要仅为访问数据而将组件转换为客户端组件——先在服务端获取数据
  • 不要在异步路由段跳过 loading.tsx/error.tsx 边界
  • 未运行 next build 确认没有错误之前,不要部署

代码示例

带数据获取和缓存的服务端组件
// app/products/page.tsx
import { Suspense } from 'react'

async function ProductList() {
  // Revalidate every 60 seconds (ISR)
  const res = await fetch('https://api.example.com/products', {
    next: { revalidate: 60 },
  })
  if (!res.ok) throw new Error('Failed to fetch products')
  const products: Product[] = await res.json()

  return (
    <ul>
      {products.map((p) => (
        <li key={p.id}>{p.name}</li>
      ))}
    </ul>
  )
}

export default function Page() {
  return (
    <Suspense fallback={<p>Loading…</p>}>
      <ProductList />
    </Suspense>
  )
}
带表单处理和重新验证的服务端操作
// app/products/actions.ts
'use server'

import { revalidatePath } from 'next/cache'

export async function createProduct(formData: FormData) {
  const name = formData.get('name') as string
  await db.product.create({ data: { name } })
  revalidatePath('/products')
}

// app/products/new/page.tsx
import { createProduct } from '../actions'

export default function NewProductPage() {
  return (
    <form action={createProduct}>
      <input name="name" placeholder="Product name" required />
      <button type="submit">Create</button>
    </form>
  )
}
用于动态 SEO 的 generateMetadata
// app/products/[id]/page.tsx
import type { Metadata } from 'next'

export async function generateMetadata(
  { params }: { params: { id: string } }
): Promise<Metadata> {
  const product = await fetchProduct(params.id)
  return {
    title: product.name,
    description: product.description,
    openGraph: { title: product.name, images: [product.imageUrl] },
  }
}

输出模板

实现 Next.js 功能时,请提供:

  1. 应用结构(路由组织)
  2. 采用恰当数据获取方式的布局/页面组件
  3. 如需变更,则提供服务端操作
  4. 配置(next.config.js、TypeScript)
  5. 对所选渲染策略的简要说明

知识参考

Next.js 14+、App Router、React 服务端组件、服务端操作、流式 SSR、部分预渲染、next/image、next/font、Metadata API、路由处理器、中间件、边缘运行时、Turbopack、Vercel 部署

由 @jeffallan 维护,他是 Synergetic Solutions 的首席顾问

文档

评论

支持 Markdown