一个前端CLAUDE.md

技术栈

  • 框架: Nuxt 4, Vue 3.5, TypeScript 6
  • UI: Nuxt UI v4(Reka UI + Tailwind CSS v4),Dashboard 系列组件(UDashboardPanel, UDashboardNavbar, UDashboardSidebar, UDashboardSearch, UDashboardToolbar)
  • 表格: @tanstack/table-core,UTable 集成排序/筛选/分页/行选择
  • 工具库: @vueuse/core(createSharedComposable, useBreakpoints), date-fns, scule, zod
  • 图表: @unovis/vue(仅客户端渲染,见 HomeChart.client.vue / HomeChart.server.vue)

Nuxt UI v4 核心规范

  • 必须app.vueerror.vue 中使用 <UApp> 包裹页面
  • 禁止 使用 Tailwind 原生色名(red, green, gray),必须 使用语义化别名:primary, secondary, success, info, warning, error, neutral
  • 弹窗统一用 v-model:open,内容放 #body 插槽
  • 自定义组件样式在 app.config.ts 中用 slotsdefaultVariants 配置
  • Dashboard 页面必须<UDashboardPanel> 包裹,<template #header><UDashboardNavbar><template #body> 放页面内容

编码规范

核心架构:Composable + 三类数据

"一个视图组件对应一个逻辑 Composable",强制分离逻辑与视图。

在 Composable 中用 reactive() 声明三类数据:

前缀 用途 特点
pageStaticData 静态/配置数据 页面生命周期内不变:字典项、常量
pageStatusData 状态/响应式数据 驱动视图:loading、tableData、errorMsg
pageSubmitData 提交数据 与接口契约严格一致

必须 暴露 initPage() 作为初始化和重置入口:

typescript 复制代码
async function initPage() {
  _initStaticData(); _initStatusData(); _initSubmitData()
  await fetchTableData()
}

函数规范

  • 最少代码原则:用最少的代码实现功能,不写一行多余的代码。
  • 避免 watch / computed :尽量用函数直接返回值替代 computed,用事件回调替代 watch,减少响应式链路复杂度。
  • 公共函数 :暴露给组件,包含副作用。私有函数_ 开头,纯函数,无副作用。
  • 复杂逻辑遵循 校验 → 处理 → 提交 三步。
  • 特例:仅完全静态无交互的纯展示页才可把 script 直接写在 .vue 中。

命名约定

  • 组件: PascalCase;Composable: use 开头与组件同名;文件/目录: kebab-case
  • 变量: camelCase;私有函数: _ 开头;类型/接口: PascalCase

组件规范

  • .vue 只负责模板结构、样式绑定、事件绑定、UI 状态展示。
  • 拆分:单组件 ≤300 行,>3 个 v-if 分支拆子组件,重复 UI 块抽取。
  • 通信:父传子 defineProps,子传父 defineEmits(事件 kebab-case),跨层级 Pinia 或 provide/inject。
  • 禁止 :直接修改 props、使用 $refs 操作子组件。

TypeScript

  • 必须 import type 导入纯类型。类型 被 Nuxt 自动导入,需显式 import,使用 ~/types 别名
  • 严禁 anyas 强制断言(API 响应转换除外)

错误处理模式

  • 私有函数 :只调 API,throw 向上传递。公共函数 :try-catch,转为友好信息写入 pageStatusData.errorMsg
  • 错误信息对用户友好,不直接展示技术错误。

API 对接

  • 所有业务 API 通过 useAPI() 访问后端 http://localhost:48080/admin-api/
  • 后端响应统一格式:{ code: 0, data: ..., msg: ... }code === 0 || 200 表示成功
  • server/api/ 目录保留原有 mock 端点(模板页面使用),与后端 API 互不冲突
  • 数据变更后需调用 refresh() 刷新关联数据

Git 提交

text 复制代码
<type>(<scope>): <subject>
类型: feat / fix / refactor / style / docs / chore
相关推荐
程序员黑豆5 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊5 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃6 小时前
前端转全栈学习路线
前端·学习
浮生望6 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry6 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
上海安当技术8 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队9 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_4316004410 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
kyriewen10 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程
IT_陈寒10 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端