affaan-m/ECC/docs/zh-CN/skills/nuxt4-patterns/SKILL.md
nuxt4-patterns
Review nuxt4-patterns's use cases, installation, workflow, and original source instructions.
- Source repository stars
- 234,327
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-07-27
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
在构建或调试具有 SSR、混合渲染、路由规则或页面级数据获取的 Nuxt 4 应用时使用。
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/affaan-m/ECC --skill "docs/zh-CN/skills/nuxt4-patterns"Inspect the Agent Skill "nuxt4-patterns" from https://github.com/affaan-m/ECC/blob/4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38/docs/zh-CN/skills/nuxt4-patterns/SKILL.md at commit 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
何时激活
服务器 HTML 与客户端状态之间的水合不匹配 路由级别的渲染决策,例如预渲染、SWR、ISR 或仅客户端部分 围绕懒加载、延迟水合或有效负载大小的性能工作 使用 useFetch、useAsyncData 或 $fetch 进行页面或组件数据获取 与路由参数、中间件或 SSR/客户端差异相关的 Nuxt 路由问题
服务器 HTML 与客户端状态之间的水合不匹配路由级别的渲染决策,例如预渲染、SWR、ISR 或仅客户端部分围绕懒加载、延迟水合或有效负载大小的性能工作 - 02
水合安全性
保持首次渲染是确定性的。不要将 Date.now()、Math.random()、仅限浏览器的 API 或存储读取直接放入 SSR 渲染的模板状态中。 当服务器无法生成相同标记时,将仅限浏览器的逻辑移到 onMounted()、import.meta.client、ClientOnly 或 .client.vue 组件后面。 使用 Nuxt 的 useRoute() 组合式函数,而不是来自 vue-router 的那个。 不要使用 route.fullPath 来驱动 SSR 渲染的标记。URL 片段是仅客户端的,这可能导致水合不匹配。 将 ssr:…
保持首次渲染是确定性的。不要将 Date.now()、Math.random()、仅限浏览器的 API 或存储读取直接放入 SSR 渲染的模板状态中。当服务器无法生成相同标记时,将仅限浏览器的逻辑移到 onMounted()、import.meta.client、ClientOnly 或 .client.vue 组件后面。使用 Nuxt 的 useRoute() 组合式函数,而不是来自 vue-router 的那个。 - 03
数据获取
在页面和组件中,优先使用 await useFetch() 进行 SSR 安全的 API 读取。它将服务器获取的数据转发到 Nuxt 有效负载中,并避免在水合时进行第二次获取。 当数据获取器不是简单的 $fetch() 调用,或者需要自定义键,或者正在组合多个异步源时,使用 useAsyncData()。 为 useAsyncData() 提供一个稳定的键以重用缓存并实现可预测的刷新行为。 保持 useAsyncData() 处理程序无副作用。它们可能在 SSR 和水合期间运行。 将 $fetch() 用于用户触发的写入或仅客户端操作,而不是应该从 S…
在页面和组件中,优先使用 await useFetch() 进行 SSR 安全的 API 读取。它将服务器获取的数据转发到 Nuxt 有效负载中,并避免在水合时进行第二次获取。当数据获取器不是简单的 $fetch() 调用,或者需要自定义键,或者正在组合多个异步源时,使用 useAsyncData()。为 useAsyncData() 提供一个稳定的键以重用缓存并实现可预测的刷新行为。
Permission review
Static risk signals and limitations
Network access
The documentation includes network, browsing, or remote request actions.
() => $fetch(`/api/articles/${route.params.slug}`),Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 61/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 234,327 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | catalog record | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- affaan-m/ECC
- Skill path
- docs/zh-CN/skills/nuxt4-patterns/SKILL.md
- Commit
- 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38
- License
- MIT
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
Nuxt 4 模式
在构建或调试具有 SSR、混合渲染、路由规则或页面级数据获取的 Nuxt 4 应用时使用。
何时激活
- 服务器 HTML 与客户端状态之间的水合不匹配
- 路由级别的渲染决策,例如预渲染、SWR、ISR 或仅客户端部分
- 围绕懒加载、延迟水合或有效负载大小的性能工作
- 使用
useFetch、useAsyncData或$fetch进行页面或组件数据获取 - 与路由参数、中间件或 SSR/客户端差异相关的 Nuxt 路由问题
水合安全性
- 保持首次渲染是确定性的。不要将
Date.now()、Math.random()、仅限浏览器的 API 或存储读取直接放入 SSR 渲染的模板状态中。 - 当服务器无法生成相同标记时,将仅限浏览器的逻辑移到
onMounted()、import.meta.client、ClientOnly或.client.vue组件后面。 - 使用 Nuxt 的
useRoute()组合式函数,而不是来自vue-router的那个。 - 不要使用
route.fullPath来驱动 SSR 渲染的标记。URL 片段是仅客户端的,这可能导致水合不匹配。 - 将
ssr: false视为真正仅限浏览器区域的逃生舱口,而不是解决不匹配的默认修复方法。
数据获取
- 在页面和组件中,优先使用
await useFetch()进行 SSR 安全的 API 读取。它将服务器获取的数据转发到 Nuxt 有效负载中,并避免在水合时进行第二次获取。 - 当数据获取器不是简单的
$fetch()调用,或者需要自定义键,或者正在组合多个异步源时,使用useAsyncData()。 - 为
useAsyncData()提供一个稳定的键以重用缓存并实现可预测的刷新行为。 - 保持
useAsyncData()处理程序无副作用。它们可能在 SSR 和水合期间运行。 - 将
$fetch()用于用户触发的写入或仅客户端操作,而不是应该从 SSR 水合而来的顶级页面数据。 - 对于不应阻塞导航的非关键数据,使用
lazy: true、useLazyFetch()或useLazyAsyncData()。在 UI 中处理status === 'pending'。 - 仅对 SEO 或首次绘制不需要的数据使用
server: false。 - 使用
pick修剪有效负载大小,并在不需要深层响应性时优先使用较浅的有效负载。
const route = useRoute()
const { data: article, status, error, refresh } = await useAsyncData(
() => `article:${route.params.slug}`,
() => $fetch(`/api/articles/${route.params.slug}`),
)
const { data: comments } = await useFetch(`/api/articles/${route.params.slug}/comments`, {
lazy: true,
server: false,
})
路由规则
在 nuxt.config.ts 中优先使用 routeRules 来定义渲染和缓存策略:
export default defineNuxtConfig({
routeRules: {
'/': { prerender: true },
'/products/**': { swr: 3600 },
'/blog/**': { isr: true },
'/admin/**': { ssr: false },
'/api/**': { cache: { maxAge: 60 * 60 } },
},
})
prerender:在构建时生成静态 HTMLswr:提供缓存内容并在后台重新验证isr:在支持的平台上进行增量静态再生ssr: false:客户端渲染的路由cache或redirect:Nitro 级别的响应行为
按路由组选择路由规则,而非全局设置。营销页面、产品目录、仪表板和 API 通常需要不同的策略。
懒加载与性能
- Nuxt 已经按路由进行代码分割。在微优化组件分割之前,保持路由边界的意义。
- 使用
Lazy前缀来动态导入非关键组件。 - 使用
v-if有条件地渲染懒加载组件,以便在 UI 实际需要时才加载该代码块。 - 对首屏下方或非关键的交互式 UI 使用延迟水合。
<template>
<LazyRecommendations v-if="showRecommendations" />
<LazyProductGallery hydrate-on-visible />
</template>
- 对于自定义策略,使用
defineLazyHydrationComponent()配合可见性或空闲策略。 - Nuxt 延迟水合适用于单文件组件。向延迟水合的组件传递新 props 将立即触发水合。
- 在内部导航中使用
NuxtLink,以便 Nuxt 可以预取路由组件和生成的有效负载。
检查清单
- 首次 SSR 渲染和水合后的客户端渲染产生相同的标记
- 页面数据使用
useFetch或useAsyncData,而非顶层的$fetch - 非关键数据是懒加载的,并具有明确的加载 UI
- 路由规则符合页面的 SEO 和新鲜度要求
- 重量级交互式组件是懒加载或延迟水合的
Alternatives
Compare before choosing
affaan-m/ECC
nuxt4-patterns
Nuxt 4 app patterns for hydration safety, performance, route rules, lazy loading, and SSR-safe data fetching with useFetch and useAsyncData.
affaan-m/ECC
nuxt4-patterns
Review nuxt4-patterns's use cases, installation, workflow, and original source instructions.