- 使用 `<script setup lang="ts">` 语法
# 代码编写规范
## 组件格式
- 使用 `<script setup lang="ts">` 语法
- 使用 `defineOptions({ name: "Xxx" })` 定义组件名
- 使用 `const ns = useNamespace("xx-xx")` 创建命名空间
- 样式文件使用 `@use "./index"` 引入
- 使用 `import { useNamespace } from "@/composables"` 创建命名空间
## 类型定义规范
- Props 和 Emits 使用 TypeScript interface 定义
- 所有函数参数都要加类型注解
- 类型文件放在组件同级目录的 `types.ts` 中
## 导入规范
1. 先引入所有 type 类型(按照导入规范顺序引入,不允许类型和函数的引入混杂在一起)
2. 引入第三方依赖(Vue 相关生态优先,如 vue、vue-router、vuex、vue-i18n、vue-use,然后是组件库如 Element Plus,@element-plus/icons-vue,最后是第三方插件)
3. 引入项目目录的其他依赖(@/路径,路径按照 src 目录结构顺序引入)
4. 引入项目目录的其他组件(@/路径,路径按照 src 目录结构顺序引入)
5. 引入相对路径的依赖(@/路径,路径按照 src 目录结构顺序引入)
6. 引入相对路径的组件(@/路径,路径按照 src 目录结构顺序引入)
7. 直接引入第三方库(如 import "vue-cropper/dist/index.css")
8. 直接引入绝对路径(如 import "@/common/styles/common/var.scss")
9. 直接引入相对路径(如 import "./index.scss")
## 组件内 Composables 使用
- 不推荐直接在组件中写响应式变量、computed、watch、function、生命周期
- 将关联性高的代码放到 `function useXx` 里然后暴露出来使用
- 使用 `defineModel` 代替 `props.modelValue`
## 文件组织
- 通用组件放在 `src/components/` 目录下,按功能分子文件夹
- 通用可复用逻辑放在 `src/composables/`
- 通用样式放在 `src/common/styles/`
- 通用 API 请求相关文件放在 `src/common/api/`
- 通用工具函数放在 `src/common/utils/`
## 命名规范
- 所有文件使用 `kebab-case` 风格
- 引入组件的命名为 `Camel-Case`,如 `import ProTable from "pro-table.vue"`
- TypeScript 接口和类型用 PascalCase
- 每个组件目录下用 `index.ts` 统一导出
## UI 设计规范
- 使用 `light.scss` 或 `dark.scss` 的 CSS 变量来统一颜色风格
- 使用 `varCss` 或 `varCssEl` 函数引用 CSS 变量(cssVar 引入 `--tk-` 开头,cssVarEl 引入 `--el-` 开头)
- 遵循 BEM 规范,优先使用 useNamespace 函数(如 `ns.b()`、`ns.e()`、`ns.em()`、`ns.is()`、`ns.has()`)
- 组件的样式优先创建并使用 `.scss` 文件,且在同级 `.vue` 文件下创建同名的 `.scss` 文件
- 使用 `bem.scss` 的混合宏(如 `@include b(xx) { @include e(xx) { @include m(xx) { @include is(xx) { @include has(xx) { } } } } }`),如果 `@include e(xx){}` 里使用 `@include e{}` 则第二个参数加上 true,即 `@include e(xx, true){}`,否则 `@include e(xx){}` 建议同级写
- 优先使用项目定义的原子类,在 `atomic.scss` 中定义
- 请适配移动端,部分移动端宽度变量在 `var.scss` 中定义
## 代码结构
- props、emits、composables 写在 script 顶部
- 适当换行,如变量与函数之间,script、template、style 标签之间必须换行
- 使用 ESLint 和 Prettier 保证代码风格统一
- composable 和函数用 JSDoc 或 TypeScript 注释说明用途Comprehensive .cursorrules file for Next.js 15 App Router projects with TypeScript, enforcing server components by default, proper use of "use client" directive, and App Router conventions.
Cursor rules for Python FastAPI projects enforcing async patterns, Pydantic v2 models, dependency injection, and proper error handling.
Rules for consistent React component development with TypeScript interfaces, proper hook patterns, and component composition.
Rules optimizing Cursor Agent mode behavior including multi-file editing context, session management, and autonomous task completion patterns.
Cursor rules for projects using Tailwind CSS with shadcn/ui component library, enforcing consistent utility class usage and component patterns.
Rules for Go backend services enforcing idiomatic Go patterns, proper error handling, and clean architecture conventions.