Asone 开发者文档Asone 开发者文档
  • 项目架构
  • 技术栈
  • 目录结构
  • 本地启动
  • 新增功能
  • 开发规范
  • 数据库
  • 图表语法
  • 部署
  • 文档同步规则
  • 相关文档
  • 项目架构
  • 技术栈
  • 目录结构
  • 本地启动
  • 新增功能
  • 开发规范
  • 数据库
  • 图表语法
  • 部署
  • 文档同步规则
  • 相关文档
  • 新增功能
    • 新增业务域
    • 新增接口
    • 新增前端页面
    • 其他常见改动

新增前端页面

步骤

图 1 · 新页面从路由到可见的五道关卡
  1. 页面文件放 src/pages/<域>/<功能>/index.tsx,列表页优先使用 PageContainer + ProTable,不要自己拼表格分页逻辑。
  2. 在对应域的 config/routes/<域>Routes.ts 增加路由项,component 使用 ./<域>/<功能>;新业务域才需要新建路由文件并在 config/routes.ts 展开。
  3. 需要按菜单权限过滤时设置 access: 'normalRouteFilter';菜单可见性依赖后台「菜单管理」中的资源记录,path 必须与路由一致。
  4. 接口调用只通过 src/services/asone-server/<域>/<controller>.ts,页面里不直接写 request。
  5. 交互文案统一走 t('key'),同时在 src/locales/zh-CN 与 src/locales/en-US 补齐,跑 pnpm i18n-check 确认无缺失。
  6. 按钮级权限用 useAccess / usePageAccess + src/constants/permissions.ts 的权限码,与后端 hasAuthority 字符串保持一致。

公共代码去向

内容目录
跨页面复用组件src/components
自定义 Hooksrc/hooks
权限码、表头搜索等常量src/constants
全局状态(导出任务、审批待办、菜单收藏 / 最近访问)src/models
主题与设计变量src/theme
工具函数src/utils
类型定义src/types

必须用的 antd 6 / React 19 写法

过期写法应写
visible / onVisibleChangeopen / onOpenChange
destroyOnClosedestroyOnHidden
bodyStyle / headStyle / dropdownStyle / dropdownClassNamestyles.body / styles.header / styles.popup.root、classNames
dropdownRenderpopupRender
bordered(Card / Table / Input)variant(outlined / borderless / filled)
Tabs.TabPane、Menu.Item、Dropdown 的 overlayitems、menu 数据驱动写法
ReactDOM.render、findDOMNode、字符串 ref、函数组件 defaultPropscreateRoot / hydrateRoot、ref 回调或 useRef;React 19 中 ref 直接作为 props,不再需要 forwardRef
momentdayjs(项目已统一)

TypeScript 不会因为 JSDoc @deprecated 报错,写组件属性前先核对当前版本文档,别照抄旧博客或旧项目示例。

本地验证

cd asone-front
pnpm install
pnpm dev            # http://localhost:8000,/api/** 代理到 http://localhost:8001

# 提交前全链路检查:Biome lint + tsc + i18n 缺失 + 工程脚本测试
pnpm lint

页面自查:窄屏与宽屏布局不错位、中英文切换文案完整、无权限账号访问受限路由落到 403、菜单可见性与后台资源一致。

上一页
新增接口
下一页
其他常见改动