--- name: frontend-app-common description: app 移动端公共开发规范,基于 uni-app、Vue 和 uView Pro,覆盖页面组织、路由、组件、扫码交互、视觉字号和交付检查 globs: - "frontend/app/**/*.vue" - "frontend/app/**/*.js" - "frontend/app/pages.json" --- ## 技术基线 当前 APP 位于 `frontend/app/`,使用以下技术约定: - uni-app 页面运行模式。 - 页面采用 Vue 单文件组件(`.vue`)。 - `main.js` 注册 `@/uni_modules/uview-pro`,并注入全局主题 mixin;每个页面可直接通过 `themeMode` 获取 `light`/`dark`,根容器必须绑定 `:class="`theme-${themeMode}`"`。 - 全局主题状态由 `utils/theme.js` 管理:`applyAppTheme(mode)` 会持久化 `scanapp_theme_mode`、同步导航栏颜色并广播 `scanapp-theme-change`;设置页切换主题时必须调用它,不能只修改本页 class。 - `pages.json` 开启 uView Pro Easycom 自动组件扫描。 - uView Pro 组件使用 `u-*` 命名,例如 `u-icon`、`u-input`、`u-form`、`u-button`、`u-switch`。 - 兼容 Vue 2 和 Vue 3 入口,新增页面优先遵循现有 Options API 写法,除非项目整体迁移。 ## 目录与页面组织 ```text frontend/app/ ├── App.vue ├── main.js ├── pages.json ├── uni.scss ├── pages/ │ ├── auth/ │ │ ├── login.vue │ │ └── register.vue │ ├── entry/ │ │ ├── order.vue │ │ └── machine.vue │ ├── exception/ │ │ └── index.vue │ ├── repair/ │ │ ├── index.vue │ │ └── tasks.vue │ ├── query/ │ │ ├── index.vue │ │ ├── index copy.vue │ │ └── index.vue │ ├── settings/ │ │ └── index.vue │ ├── statistics/ │ │ └── index.vue │ └── index/ │ └── index.vue └── uni_modules/ ``` 新增页面时: 1. 页面文件放入 `pages//`。 2. 页面入口优先使用 `index.vue`,业务模式页面可使用明确名称,例如 `entry/order.vue`。 3. 必须在 `pages.json` 的 `pages` 数组中注册路由。 4. `pages.json` 中的路径不带 `.vue` 后缀,例如 `pages/settings/index`;设置模块也允许使用与路由同名的平铺页面文件,例如 `pages/settings/feedback.vue` 对应 `pages/settings/feedback`。 5. 页面导航标题通过路由项的 `style.navigationBarTitleText` 配置。 6. 不要把未注册的副本页面当作运行页面维护;例如 `index copy.vue` 不属于正式路由。 7. `pages.json` 的首项保持为 `pages/index/index`,APP 启动默认进入首页,不把登录页放在最前面。 ## 页面结构规范 页面组件按以下顺序组织: 1. `