Files
wireguard-dashboard/web/.aiassistant/rules/front_code_rule.md
2026-03-30 17:08:46 +08:00

72 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
apply: 始终
---
# 前端开发全局强制准则 (V1.0 - Multi-Framework Pro)
## 1. 性能与资产安全 (Performance & Asset Safety)
* **加载优化 (Loading)**
* **强制路由懒加载**:所有页面组件必须使用动态 `import()` 导入。
* **按需引入**UI 框架Naive UI, Element Plus, AntD必须配置插件实现自动按需引入严禁全局注册。
* **渲染性能 (Rendering)**
* **长列表防御**:展示数据超过 50 条时,必须使用**虚拟列表 (Virtual List)** 或分页加载,禁止直接渲染大批量 DOM。
* **资产压缩**:禁止在页面加载超过 500KB 的原始图片,必须使用 WebP 格式或 CDN 缩略图参数。
* **内存释放 (Cleanup)**
* 定时器 (`setInterval`)、全局事件监听 (`window.addEventListener`)、WebSocket 必须在组件卸载钩子(`onUnmounted` / `useEffect cleanup`)中明确销毁。
## 2. 状态管理与数据流 (State & Data Flow)
* **状态分层原则**
* **局部优先**:仅在跨页面/跨多级组件共享时才使用 Pinia 或 Redux。
* **不可变性 (Immutability)**:严禁直接修改复杂对象的属性,必须使用解构赋值或 `set` 函数确保引用更新。
* **数据安全 (Safety)**
* **可选链操作**:渲染后端异步数据必须使用 `?.` 可选链,严禁因 `undefined` 导致页面白屏。
* **声明式校验**:表单提交前必须通过 Schema 校验,严禁依赖后端接口反馈作为唯一拦截手段。
## 3. 组件架构与规模控制 (Architecture & Scale)
* **单文件硬指标****单个组件文件代码禁止超过 1000 行**。
* **重构门禁**:超过 800 行时AI/开发者必须将业务逻辑抽离至 `Hooks` (Vue3 `useXXX` / React `useXXX`)。
* **层级规范**
* 目录嵌套严禁超过 4 层。
* **职责分离**:复杂的页面必须拆分为“逻辑容器组件”和“纯 UI 展示组件”。
* **通用逻辑封装**
* 业务无关的格式化、正则、计算函数必须存放在 `src/utils`
* 跨组件复用的逻辑必须封装为 `Hooks`
## 4. 命名与样式规范 (Naming & CSS)
* **精简命名**
* **组件命名**:采用 `PascalCase`(如 `UserCard.vue`),严禁超过 3 个单词。
* **方法前缀**:事件处理函数使用 `handle`(如 `handleSearch`),数据获取使用 `fetch``get`
* **样式隔离 (Scoped CSS)**
* 必须启用 `scoped``CSS Modules`,严禁定义可能污染全局的类名。
* **严禁内联样式**:禁止在 HTML 标签上写大量 `style` 属性。
* **变量化**:颜色、字号必须引用预定义的 CSS 变量,严禁在组件内散落十六进制颜色值。
## 5. 框架专项标准 (Framework Specifics)
### Vue3 (uniapp / Naive UI)
* **语法糖**:必须使用 `<script setup>` 组合式 API。
* **响应式选择**:单一基本类型用 `ref`,结构化对象用 `reactive`
* **uniapp 适配**:原生 API扫码、支付必须在 `src/utils/uni-tools.js` 中二次封装,禁止页面内直接调用原生接口。
### React
* **依赖闭包**`useEffect``useCallback` 必须明确声明所有依赖项,严禁由于闭包陷阱导致状态陈旧。
* **组件更新**:优先使用 `React.memo` 优化高频刷新的子组件。
---
## 🤖 智能体执行指令 (Agent Frontend Instructions)
1. **预审行数**AI 生成代码前统计当前行数。若生成后 > 1000 行AI 必须拒绝直接输出并主动提供逻辑拆分Hooks 提取)方案。
2. **安全性补全**
* 自动为后端返回的数据访问添加 `?.`
* 自动在卸载钩子中生成资源清理代码(如 `clearInterval`)。
3. **按需引入校验**AI 生成的 UI 组件代码必须采用按需导入模式,严禁 `import { ... } from 'ui-lib'` 全量导入。
4. **命名自检**:自动精简用户提供的冗长类名或方法名。
---
## 强制执行门禁 (Submission Gaterails)
* **ESLint/Prettier**:必须 100% 通过校验。
* **TS 约束**:严禁滥用 `any`。所有后端接口返回数据必须定义 `interface``type`
* **生产环境清理**:严禁残留 `console.log` 和测试注释。
* **一票否决**:违反任一强制规则(如白屏隐患、内存泄漏、样式全局污染),评审直接驳回。