前端规范
代码风格与检查
- 统一 Biome 格式化:Tab 缩进(宽度 4)、单引号,配置在
asone-front/biome.json。 src/services、public、.umi*、dist、node_modules不参与 Biome 检查;src/services/asone-server由pnpm openapi生成,但类型仍需与后端保持一致。- Lint 关闭项:
noExplicitAny、useExhaustiveDependencies,以及部分 a11y 规则(noStaticElementInteractions、useKeyWithClickEvents)。 - 提交前执行
pnpm lint,它是biome:lint+tsc --noEmit+i18n-check+node --test "scripts/**/*.test.mjs"的链式脚本,任一环节失败都不算通过。
cd asone-front
pnpm biome # 按配置自动格式化与修复
pnpm lint # 提交前全量检查
pnpm i18n-check # 只查中英文案缺失
框架与组件用法
- React 19:函数组件不再需要
forwardRef,ref直接作为 props;不用字符串 ref、不用findDOMNode、不给函数组件设defaultProps。 - antd 6 / ProComponents:列表页用
PageContainer+ProTable;数据驱动写法(items、menu)优先于子组件式旧写法。 - 时间统一
dayjs,禁止moment;样式用 Tailwind 4 原子类 +src/theme设计变量,不在页面内写大段行内样式。 - 接口调用只经过
src/services/asone-server/...,页面不直接request;全局拦截在src/globalRequestConfig.ts。 - 权限:
useAccess/usePageAccess+src/constants/permissions.ts,不散落硬编码权限字符串。 - 国际化:所有面向用户的文案走
t('key'),zh-CN与en-US同步补齐。
禁止过期 API
| 过期写法 | 应写 |
|---|---|
visible / onVisibleChange(Modal / Drawer / Dropdown / Tooltip) | open / onOpenChange |
destroyOnClose | destroyOnHidden |
bodyStyle / headStyle / dropdownStyle / dropdownClassName | styles.body / styles.header / styles.popup.root、classNames |
dropdownRender | popupRender |
bordered(Card / Table / Input) | variant(outlined / borderless / filled) |
Tabs.TabPane、Menu.Item、Dropdown 的 overlay | items、menu |
ReactDOM.render / hydrate | createRoot / hydrateRoot |
moment、moment-timezone | dayjs |
TypeScript 不会因 JSDoc @deprecated 报错,因此写组件属性前必须查当前版本文档;依赖过期情况用 pnpm outdated 自查。
依赖管理
- 新增依赖只选官方出品且持续发布的库,已归档或标注 EOL 的不引入(
request、node-fetch2.x 等)。 - 项目已有能力不重复引库:dayjs、
@ant-design/charts、@antv/g6、bpmn-js、@dnd-kit、@file-viewer 已覆盖图表、流程图、拖拽与文件预览。 - 使用
pnpm(devEngines已约束包管理器),提交保持pnpm-lock.yaml同步更新,不用 npm / yarn 生成额外锁文件。
