Skip to content
Back to skills

Fec Nuxt Project Standard

ASecurity

Use when creating or reviewing Nuxt 3 projects, file routes, pages, layouts, SSR/SSG/SPA behavior, Nuxt data fetching, route middleware, plugins, modules, server routes, or Nuxt-specific Vue 3 conventions. For generic Vue component architecture, apply the project's Vue conventions separately; Chinese triggers include Nuxt, Nuxt 3.

  • 21 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
developmenttypescriptvuenodeapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add bovinphang/frontend-craft --skill fec-nuxt-project-standard --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fec Nuxt Project Standard?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fec Nuxt Project Standard
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bovinphang-fec-nuxt-project-standard/badge)](https://www.skillsdirectory.com/skills/bovinphang-fec-nuxt-project-standard)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fec-nuxt-project-standard
description: Use when creating or reviewing Nuxt 3 projects, file routes, pages, layouts, SSR/SSG/SPA behavior, Nuxt data fetching, route middleware, plugins, modules, server routes, or Nuxt-specific Vue 3 conventions. For generic Vue component architecture, apply the project's Vue conventions separately; Chinese triggers include Nuxt, Nuxt 3.
---

# Nuxt 3 项目规范

适用于使用 Nuxt 3 + Vue 3 + TypeScript 的仓库。

## Purpose

规范 Nuxt 3 项目中 SSR/SSG 渲染模式、组合式 API、自动导入、数据获取、路由中间件和模块插件的工程实践,确保约定式开发和类型安全。

## Procedure

1. 先识别目标属于 Nuxt pages/layouts、渲染模式、数据获取、route middleware、plugin/module 还是 server route。
2. 明确 SSR / SSG / SPA 选择,避免服务端可执行代码依赖 `window` 或 `document`。
3. 数据获取优先使用 Nuxt 的 `useFetch` / `useAsyncData`,并检查水合一致性。
4. 路由鉴权、redirect 和权限问题与路由保护 workflow 对齐。
5. 通用 Vue 组件架构问题分流到 Vue 项目 workflow。

## 项目结构

```
├── app.vue                    # 根组件
├── nuxt.config.ts              # Nuxt 配置
│
├── pages/                     # 基于文件的路由
│   ├── index.vue               # /
│   ├── login.vue               # /login
│   ├── dashboard/
│   │   ├── index.vue           # /dashboard
│   │   └── users/
│   │       ├── index.vue       # /dashboard/users
│   │       └── [id].vue       # /dashboard/users/:id
│   └── [...slug].vue          # 捕获所有
│
├── layouts/                   # 布局
│   ├── default.vue
│   └── auth.vue
│
├── components/                # 自动导入组件
│   ├── Button/
│   │   └── Button.vue
│   └── AppHeader.vue
│
├── composables/               # 组合式函数(自动导入)
│   ├── useAuth.ts
│   └── useFetch.ts
│
├── server/                    # 服务端 API
│   ├── api/                   # API 路由
│   │   └── users/
│   │       └── index.get.ts
│   ├── middleware/            # 服务端中间件
│   └── utils/                 # 服务端工具
│
├── plugins/                   # 插件
│   └── i18n.client.ts
│
├── middleware/                # 路由中间件
│   └── auth.ts
│
├── public/                    # 静态资源
├── assets/                    # 需构建的资源
└── types/                     # 类型定义
```

## 渲染模式

| 模式    | 配置            | 说明           |
| ------- | --------------- | -------------- |
| **SSR** | 默认            | `ssr: true`    |
| **SSG** | `nuxt generate` | 预渲染所有页面 |
| **SPA** | `ssr: false`    | 纯客户端渲染   |

```ts
// nuxt.config.ts
export default defineNuxtConfig({
  ssr: true, // 或 false
});
```

## 数据获取

- `useFetch` / `useAsyncData`:服务端 + 客户端,自动去重
- `$fetch`:直接请求,适合服务端或一次性调用
- `useLazyAsyncData`:不阻塞导航,适合非首屏
- 避免在 `setup` 顶层混用同步/异步逻辑导致水合不匹配

## 路由与布局

- `pages/` 下文件自动生成路由
- 动态路由:`[id].vue`、`[...slug].vue`
- 布局:`layout` 选项或 `layouts/default.vue` 默认
- 嵌套路由:`pages/parent/child.vue` 需配合 `NuxtPage`

## 中间件

- `middleware/` 下文件自动注册
- 页面级:`definePageMeta({ middleware: ['auth'] })`
- 全局:`nuxt.config.ts` 的 `router.middleware`
- 服务端中间件:`server/middleware/`

## 插件与模块

- 插件:`plugins/*.ts`,支持 `.client`、`.server` 后缀
- 模块:`modules/` 或 `node_modules`,在 `nuxt.config` 中 `modules: []`

## Constraints

- 服务端可访问的代码不要依赖 `window`、`document`
- 使用 `useState` 共享状态时注意 SSR 序列化
- 图片使用 `NuxtImg`,链接使用 `NuxtLink`
- 避免在 `setup` 顶层使用 `await` 导致阻塞,优先用 `useAsyncData` / `useFetch`

## Expected Output

- 页面按 `pages/` 约定式路由组织,动态路由正确配置
- 渲染模式(SSR/SSG/SPA)选择正确,`nuxt.config.ts` 配置清晰
- 数据获取使用 `useFetch` / `useAsyncData`,自动去重和水合
- Composables 和组件自动导入正确,服务端/客户端边界清晰

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.