Vue 3 + TypeScript 项目的完整工程规范,涵盖项目结构、组件设计、Composables、路由、Pinia 状态管理、API 层、错误处理、测试和性能优化。当用户在 Vue 项目中创建、修改组件或模块,涉及架构设计、代码编写时自动激活。
适用于使用 Vue 3 + TypeScript 的仓库。
以下为中大型 Vue 3 项目的业界最佳实践结构,按项目实际情况裁剪:
src/
├── app/ # 应用入口与全局配置
│ ├── App.vue # 根组件
│ ├── main.ts # 应用启动入口
│ └── router.ts # 路由实例与配置
│
├── pages/ # 页面组件(与路由一一对应)
│ ├── Dashboard/
│ │ ├── DashboardPage.vue
│ │ ├── components/ # 页面私有组件
│ │ └── composables/ # 页面私有 composables
│ ├── UserList/
│ └── Settings/
│
├── layouts/ # 布局组件
│ ├── MainLayout.vue # 主布局(侧边栏 + 顶栏 + 内容区)
│ ├── AuthLayout.vue # 登录/注册页布局
│ └── BlankLayout.vue # 空白布局(错误页等)
│
├── features/ # 功能模块(按业务领域划分)
│ ├── auth/
│ │ ├── components/ # 模块组件
│ │ ├── composables/ # 模块 composables
│ │ ├── api.ts # 模块 API 调用
│ │ ├── types.ts # 模块类型定义
│ │ ├── constants.ts # 模块常量
│ │ └── index.ts # 模块公开导出
│ └── order/
│
├── components/ # 全局共享 UI 组件
│ ├── AppButton/
│ │ ├── AppButton.vue
│ │ └── tests/
│ ├── AppModal/
│ ├── AppForm/
│ └── AppErrorBoundary/
│
├── composables/ # 全局共享 composables
│ ├── useAuth.ts
│ ├── useDebounce.ts
│ └── useMediaQuery.ts
│
├── services/ # API 基础层
│ ├── request.ts # Axios/fetch 实例与拦截器
│ └── endpoints/ # API 端点定义(如按领域拆分)
│
├── stores/ # Pinia 状态管理
│ ├── authStore.ts
│ └── uiStore.ts
│
├── locales/ # 国际化语言包
│ ├── zh-CN.json # 中文
│ ├── en-US.json # 英文
│ └── index.ts # i18n 实例初始化(vue-i18n)
│
├── assets/ # 静态资源
│ ├── images/ # 图片(PNG、JPG、WebP)
│ ├── icons/ # SVG 图标
│ └── fonts/ # 自定义字体
│
├── config/ # 应用配置
│ ├── env.ts # 环境变量类型化封装
│ └── features.ts # Feature Flags 管理
│
├── types/ # 全局共享类型
│ ├── api.ts # API 响应/请求通用类型
│ ├── models.ts # 业务实体类型
│ └── global.d.ts # 全局类型扩展(组件类型、模块声明等)
│
├── utils/ # 纯工具函数
│ ├── format.ts # 日期、数字、货币格式化
│ ├── validators.ts # 表单校验规则
│ └── storage.ts # LocalStorage / SessionStorage 封装
│
├── directives/ # 自定义指令
│ ├── vPermission.ts # 权限指令
│ └── vClickOutside.ts # 点击外部关闭
│
├── plugins/ # Vue 插件注册
│ ├── i18n.ts # vue-i18n 插件配置
│ └── index.ts # 插件统一注册入口
│
├── styles/ # 全局样式与主题
│ ├── global.css # 全局基础样式(reset / normalize)
│ ├── variables.css # CSS 变量(颜色、间距、字号)
│ ├── breakpoints.ts # 响应式断点常量
│ └── themes/ # 主题定义
│ ├── light.css # 亮色主题变量
│ ├── dark.css # 暗色主题变量
│ └── index.ts # 主题切换逻辑
│
└── constants/ # 全局常量
├── routes.ts # 路由路径常量
└── config.ts # 业务常量(分页大小、超时时间等)
页面组件 (Pages) → 路由映射、布局组合
└── 容器组件 (Containers) → 数据获取、状态编排
└── 业务组件 (Features) → 领域逻辑展示
└── 通用组件 (UI) → 纯展示,无业务耦合
通用 TypeScript / JavaScript 约定见插件模板 templates/rules/typescript.md(初始化到项目后为 .claude/rules/typescript.md)。
vue
typescript
export function useUserList(params: MaybeRef
const data = ref
const loading = ref(false);
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 vue3-project-standard-1775920142 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 vue3-project-standard-1775920142 技能
skillhub install vue3-project-standard-1775920142
文件大小: 7.77 KB | 发布时间: 2026-4-12 11:54