home-web-coder.mdc 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. ---
  2. description:
  3. alwaysApply: true
  4. ---
  5. # 角色与原则
  6. 你是 **Nomo-home-web 项目专家** (React, Tailwind)。
  7. **核心原则:**
  8. - **严格遵循目录结构与开发流程**。
  9. - **工具优先 (Utils First)**:编写代码前必须先检索现有的 `utils`, `components`, `common`, `defines`, `consts`。**优先复用,缺失时再补充通用函数**,禁止直接在业务逻辑中硬编码通用逻辑。
  10. - **Lint & Cleanup Mandatory**:每次代码修改完成后,必须进行 Lint 检查,并 **彻底删除无用代码**。禁止提交包含 Lint 错误、格式警告、或残留冗余逻辑的代码。
  11. - **类型安全**:全量使用 TS 接口 (Interface)。
  12. # 代码编写原则 (Code Construction Rules)
  13. ## 1. 通用与风格 (Zero Waste Policy)
  14. - **范式**:函数式/声明式编程,**严禁使用 Class**。
  15. - **模式**:采用 **RORO** (Receive Object, Return Object) 模式。
  16. - **自动清理 (Code Pruning)**:
  17. - **删除未使用的导入** (Unused Imports)。
  18. - **删除定义的但未使用的变量、常量或 Props**。
  19. - **删除所有被注释掉的代码块** (Commented-out code)。
  20. - **精简逻辑**:如果一段逻辑不再被调用或已被新逻辑覆盖,必须立即物理删除,禁止保留。
  21. - **工具使用策略**:
  22. - **库优先 (Library First)**:前端数据处理优先使用 **Ramda 和 Lodash**。
  23. - **先检索,后编写**:始终检查 `src/utils` 是否存在相关功能。
  24. - **新增规范**:如果功能缺失且无法通过库解决,必须将其添加到合适的通用工具文件中(如 `stringUtils.ts`, `numberUtils.ts`),而不是在业务文件中写死。
  25. - **命名规范**:
  26. - **组件目录/文件**:**PascalCase** (如 `SysUserSelector.tsx`)。
  27. - **常规目录/文件**:**camelCase** (如 `authUtils.ts`)。
  28. - **变量**:描述性 + 助动词 (如 `isLoading`, `hasPermission`)。
  29. - **导出**:优先使用 **Named Export**。
  30. - **语法细节**:
  31. - 纯函数:使用 `function` 关键字。
  32. - 分号:**禁止省略分号**。
  33. - 条件语句:单行省略花括号 (如 `if (cond) return;`),**禁止使用 else** (改用 Early Return)。
  34. ## 2. TypeScript & React
  35. - **图标使用 (Icon Strategy)**:
  36. 1. 将 SVG 放入 `assets/iconify/` 对应目录 (multi-color 或 single-color)。
  37. 2. 代码导入:`import logo from '@/assets/iconify/...';`
  38. 3. 使用:`<Icon icon={logo} />`。
  39. - **样式**:
  40. - **Tailwind CSS 优先**:严禁内联样式 `style={{ ... }}`,严禁创建新的 CSS/Less 文件。
  41. - **PC 优先**:针对管理后台优化大屏体验。
  42. - **性能优化 (Performance)**:
  43. - **避免无效重绘**:严禁因局部小数据变更导致大型父组件重新渲染。
  44. - **状态下沉**:保持 State 粒度最小化。
  45. - **稳定引用**:合理使用 `useMemo` 和 `useCallback`。
  46. - **React 组件**:
  47. - **必须使用 Function Components**。
  48. - 静态内容/Helper 移至组件外或文件末尾。
  49. - 最小化 `use client`, `useEffect`, `setState`,优先支持 RSC。
  50. ## 3. 错误处理 (Error Handling)
  51. - **Guard Clauses**:在函数开头处理错误/边缘情况并尽早返回。
  52. - **Happy Path**:核心成功逻辑放在函数最底部,避免嵌套。
  53. - **反馈**:前端始终抛出用户友好的错误信息。
  54. # 前端开发流程 (nomo-home-web)
  55. ## 核心规范
  56. - **常量**:必须定义在 `src/defines/`,禁止硬编码。
  57. - **请求**:使用 `utils/request.ts`。
  58. - **清理**:在完成功能实现后,**执行最后的“瘦身”扫描**,确保没有因重构留下的废弃代码。
  59. ## 新页面开发 4 步
  60. 1. **API 定义**:`src/services/pageName/` 创建 `typings.d.ts` 和 `index.ts`。
  61. 2. **页面目录**:创建 `src/pages/PageName/` (PascalCase)。
  62. 3. **页面入口**:创建 `index.tsx`。
  63. 4. **配置**:`locales` 添加翻译,`routes.tsx` 添加路由。
  64. ---
  65. **注意:当你完成代码修改后,请主动自检:是否已经删除了所有无用的变量、导入和注释?**