Skyroc Admin React
专题能力

示例页面边界

区分 apps/admin 当前页面中的真实开发入口、演示页和占位页,避免把 manage/user、manage/menu、manage/role 误当成标准业务实现

这一页说明 apps/admin/src/pages 里哪些页面可以作为二次开发入口,哪些只是演示或占位。当前应用里 manage/usermanage/menumanage/role 的路由名称很像真实管理模块,但页面内容并不是完整的用户、菜单、角色 CRUD。

写业务页面前先确认这个边界,避免把通知、弹窗或 UnoCSS 主题展示页面直接复制成生产代码。

适用场景

场景重点位置
判断某个现有页面能不能直接复用apps/admin/src/pages/(admin)
准备把 demo 页面替换成真实业务页features/tableservice/api/system-manage
给菜单加真实列表、详情或编辑页routing/overviewrouting/route-metafeatures/table-and-form
排查菜单标题、权限和页面内容不一致每个 route 文件的 staticData 和组件正文

当前实现位置

文件当前职责
apps/admin/src/pages/(admin)/home/index.tsx后台首页和 dashboard 示例,包含菜单 badge、卡片、图表和项目动态模块。
apps/admin/src/pages/(admin)/manage/user/index.tsx通知系统演示页,使用 useNotificationContext() 和 mock 通知数据。
apps/admin/src/pages/(admin)/manage/menu/index.tsxAnt Design message、notification、modal 的测试页面。
apps/admin/src/pages/(admin)/manage/role/index.tsxUnoCSS Design System 和主题色展示页面。
apps/admin/src/pages/(admin)/manage/user/$id.tsx用户详情动态路由示例,用于展示 activeMenu 一类路由元信息。
apps/admin/src/pages/(admin)/soybean-docs.tsx外链路由示例,使用 href
apps/admin/src/pages/(admin)/soybean-docs-iframe.tsxiframe 路由示例,使用 url

页面现状清单

路由可以学什么不要误解成
/home后台首页布局、图表模块、菜单 badge、Dashboard 卡片组合完整的数据看板产品实现
/manage/user通知上下文、通知配置、浏览器通知权限、声音开关用户管理列表页
/manage/menuAnt Design 全局 message、notification、modal 包装函数菜单管理 CRUD
/manage/roleUnoCSS 主题色、色阶、设计系统展示角色管理 CRUD
/manage/user/$id动态路由、隐藏详情页、菜单激活关系完整用户详情业务流
/soybean-docs外链菜单配置内嵌页面
/soybean-docs-iframeiframe 菜单配置普通 React 页面

这里的关键点是:路由名称、菜单名称和页面真实内容并不总是同一个阶段的产物。文档和二次开发应以当前页面源码为准,而不是只看菜单名称。

开发真实管理页的路径

如果要把 manage/usermanage/menumanage/role 改成真实业务页,建议按这个顺序做:

  1. 先确认路由是否保留在原路径,还是新建一个业务路由。
  2. service/api/system-manage 或新的服务模块里补齐接口、类型、query keys 和 hooks。
  3. 表格与表单useTable()TableHeaderOperationuseTableOperate() 组织列表页。
  4. 在 route staticData 里配置 titlei18nKeymenupermissions
  5. 如果保留 demo 能力,把 demo 页面迁到更明确的示例目录,避免生产菜单下混入测试页面。

最小结构可以这样拆:

apps/admin/src/pages/(admin)/manage/user/
  index.tsx       # 用户列表和搜索
  $id.tsx         # 用户详情
  modules/
    UserSearch.tsx
    UserTable.tsx
    UserOperateDrawer.tsx

页面层只组合路由、搜索、表格和抽屉;接口请求和分页状态交给 service/apifeatures/table。不要在页面里重新写一套请求缓存、分页状态和列设置。

外链和 iframe 页面

当前外链与 iframe 是两种不同路由形态:

形态配置重点行为
外链staticData.href守卫识别后打开新窗口,当前页面不承载内容。
iframestaticData.url菜单进入应用内 iframe 页面,tabs 和菜单仍在后台壳内。

新增这类页面时,优先看 路由元信息hrefurlactiveMenu 说明,不要把 iframe 页面写成普通业务组件。

常见误区

误区正确做法
看到 /manage/user 就按用户列表文档写说明先看源码。当前它是通知 demo。
直接复制 manage/menu 的测试按钮作为业务页骨架只把消息、弹窗 API 的用法迁移出来,业务页重新按表格/表单结构写。
manage/role 当成角色管理最佳实践它主要展示 UnoCSS 和主题色,不处理角色接口。
在 demo 页里追加真实业务逻辑先拆清 demo 和业务页面边界,再迁移或替换。
只改菜单标题,不改权限和 i18nstaticData.permissionsi18nKey、语言文件和菜单显示要一起对齐。

相关链接

On this page