技能 next-best-practices

next-best-practices

安全

Разработка готовых к продакшену приложений на Next.js

Перестаньте гадать о шаблонах Next.js и пишите масштабируемый код. Этот навык предоставляет авторитетные рекомендации от Vercel об оформлении файлов, React Server Components, получении данных, обработке ошибок и лучших практиках развертывания.

支持: Claude Codex Code(CC)
📊 69 充足
1

下载技能 ZIP

2

在 Claude 中上传

前往 设置 → 功能 → 技能 → 上传技能

3

开启并开始使用

测试它

正在使用“next-best-practices”。 Должен ли я использовать 'use client' в этом компоненте?

预期结果:

Исходя из вашего кода, здесь вам НЕ нужно использовать 'use client'. Этот компонент получает данные только через props и рендерит JSX без каких-либо браузерных API. Добавление 'use client' неоправданно увеличит размер клиентского бандла.

Оставьте его как Server Component, если вам не нужны:
- useState, useEffect или другие React hooks
- Браузерные API вроде window или document
- Обработчики событий вроде onClick
- Получение данных на стороне клиента

正在使用“next-best-practices”。 Проверьте мое использование async params

预期结果:

Ваш тип params неверен для Next.js 15+. Обновите его до:

type Props = {
params: Promise<{ slug: string }>
}

export default async function Page({ params }: Props) {
const { slug } = await params
// ...
}

Свойство params теперь является Promise, который необходимо ожидать. Это изменение включает частичное предварительное рендеринг и улучшает производительность.

正在使用“next-best-practices”。 Как исправить эту ошибку гидратации?

预期结果:

Ваша ошибка гидратации вызвана использованием Date.now() в компоненте. Сервер и клиент рендерят разные метки времени.

Решения:
1. Используйте 'use client', если отображение даты не критично для SEO
2. Используйте suppressHydrationWarning для меток времени
3. Отображайте дату только на клиенте с useEffect

Пример исправления:
const [date, setDate] = useState<string>()
useEffect(() => setDate(new Date().toISOString()), [])

Это гарантирует, что дата отображается только на клиенте.

安全审计

安全
v1 • 1/28/2026

All 790 static analysis findings are false positives. The skill contains only documentation and code examples for Next.js best practices. Pattern matches for 'external commands' are Markdown code blocks, 'network' findings are documentation URLs, and 'env_access' references are standard configuration examples. No executable code or security risks detected.

20
已扫描文件
3,410
分析行数
0
发现项
1
审计总数
未发现安全问题
审计者: claude

质量评分

38
架构
100
可维护性
87
内容
25
社区
100
安全
83
规范符合性

你能构建什么

Проверка новых проектов Next.js

Убедитесь, что структура вашего проекта соответствует официальным соглашениям с первого дня. Проверьте организацию файлов, сегменты маршрутов и использование специальных файлов.

Миграция на App Router

Получите пошаговое руководство по преобразованию кода из Pages Router в App Router с надлежащими Server Components, асинхронными шаблонами и получением данных.

Отладка проблем в продакшене

Устраните ошибки гидратации, проблемы сборки и конфигурации развертывания с проверенными решениями от Vercel.

试试这些提示

Проверка структуры проекта
Проверьте структуру моего проекта Next.js и идентифицируйте любые файлы, которые не следуют соглашениям App Router. Проверьте правильное использование layout.tsx, page.tsx, loading.tsx, error.tsx и групп маршрутов.
Исправление проблем Server Component
У меня возникают ошибки с React Server Components. Проверьте этот код и сообщите, правильно ли я использую async/await для params, cookies или заголовков. Также проверьте, случайно ли я использую только клиентские API в серверных компонентах.
Оптимизация получения данных
Проверьте мои шаблоны получения данных и идентифицируйте любые водопады. Покажите, как использовать Promise.all, границы Suspense или паттерны предварительной загрузки для улучшения производительности.
Настройка собственного хостинга
Помогите мне настроить мое приложение Next.js для собственного хостинга с Docker. Мне нужен автономный вывод, настройка обработчика кэша для ISR и конфигурация переменных окружения.

最佳实践

  • Всегда типизируйте params и searchParams как Promise<T> в Next.js 15+ и ожидайте их в Server Components
  • Используйте динамические импорты с ssr: false для пакетов только для браузера, чтобы предотвратить ошибки на стороне сервера
  • Реализуйте границы loading.tsx и error.tsx для улучшения пользовательского опыта во время получения данных и состояний ошибок
  • Настройте output: 'standalone' в next.config.js для развертываний Docker для минимизации размера изображения
  • Используйте next/image вместо тегов img для автоматической оптимизации и улучшения Core Web Vitals

避免

  • Не используйте 'use client' без необходимости — Server Components снижают количество JavaScript, отправляемого в браузер
  • Избегайте последовательного получения данных во вложенных компонентах — используйте Promise.all или Suspense для предотвращения водопадов
  • Никогда не используйте префикс NEXT_PUBLIC_ для секретов — они раскрываются в бандле браузера
  • Не используйте теги Link для CSS — импортируйте CSS-файлы напрямую для правильной сборки
  • Избегайте пользовательской конфигурации webpack — предпочитайте serverExternalPackages и transpilePackages, совместимые с Turbopack

常见问题

Когда我应该 использовать 'use client' по сравнению с сохранением Server Component?
Используйте 'use client' только когда вам нужны браузерные API, React hooks вроде useState/useEffect или обработчики событий. Server Components могут получать props, получать данные и рендерить JSX без этой директивы. По умолчанию используйте Server Components для лучшей производительности.
Как обрабатывать async params в Next.js 15?
Типизируйте params как Promise<{ slug: string }> и ожидайте его в асинхронном компоненте. Для клиентских компонентов используйте React.use(), чтобы распаковать promise. Это изменение включает частичное предварительное рендеринг.
В чем разница между Server Actions и Route Handlers?
Server Actions предназначены для мутаций из компонентов с автоматической ревалидацией. Route Handlers предназначены для API-эндпоинтов, которым нужна специальная обработка запросов/ответов. Используйте Server Actions для отправки форм, Route Handlers для вебхуков или внешних прокси API.
Как исправить ошибки 'window is not defined'?
Это происходит, когда код только для браузера выполняется на сервере. Решения: 1) Добавьте 'use client', если компонент работает только в браузере, 2) Используйте динамический импорт с ssr: false, 3) Оберните браузерный код в useEffect, который выполняется только на клиенте.
Что вызывает ошибки гидратации и как их исправить?
Ошибки гидратации возникают, когда сервер и клиент рендерят разный HTML. Частые причины: Date.now(), Math.random(), использование localStorage или некорректное вложение HTML. Исправьте, используя suppressHydrationWarning, отрисовку динамического содержимого только на клиенте с useEffect или исправив структуру HTML.
Как развернуть Next.js на моих собственных серверах?
Используйте output: 'standalone' в next.config.js для развертываний Docker. Для setups с несколькими экземплярами реализуйте пользовательский обработчик кэша с использованием Redis или S3. Всегда включайте конечную точку проверки здоровья и скопируйте папки public/ и .next/static/ в ваш контейнер.