✨ 新增功能: - 全局路由守卫模块 (route-guard.js) - 多层次权限验证 (登录状态+Token存在+Token过期检查) - 自动拦截机制 (页面级+跳转级+HTTP级+应用级) - 401响应自动处理和跳转 - 路由守卫测试页面 🔧 技术实现: - checkPageAccess() 全局页面权限检查 - guardedNavigate/guardedSwitchTab 带权限检查的跳转 - handleUnauthorized() HTTP拦截器401处理 - 公开页面配置管理 - 优雅的错误提示和跳转逻辑 📱 页面集成: - App.vue 初始化路由守卫 - profile/workbench 页面添加权限检查 - index 页面优化跳转逻辑 - 新增测试页面验证功能 📚 文档完善: - 移动端路由守卫使用指南 - 详细的变更记录和技术说明 - 最佳实践和注意事项 🎯 核心效果: 用户登录失效或未登录时,访问任何需要权限的页面都自动跳转到登录页,提升安全性和用户体验。
智慧校园 UniApp 项目
基于 UniApp + Vue3 + uView-plus 的跨平台智慧校园应用。
技术栈
- 框架: UniApp + Vue3
- UI 组件库: uView-plus
- 代码规范: ESLint
- 样式: SCSS
- 不使用: TypeScript
支持平台
- 微信小程序
- H5
- iOS App
- Android App
- 其他小程序平台
项目结构
src/
├── pages/ # 页面目录
│ ├── index/ # 首页
│ ├── workbench/ # 办公中心
│ └── profile/ # 我的
├── utils/ # 工具函数
│ ├── request.js # API请求工具
│ ├── sse.js # SSE实时数据工具
│ └── device.js # 设备兼容性工具
├── static/ # 静态资源
├── App.vue # 应用入口
├── main.js # 项目入口
├── pages.json # 页面配置
└── uni.scss # 全局样式
核心功能
1. 底部导航
- 首页:展示校园服务快捷入口
- 办公中心:办公应用和功能
- 我的:个人信息和设置
2. 数据管理
- RESTful API 接口
- 智能缓存策略(支持过期时间)
- SSE 实时数据推送(H5 环境使用原生 EventSource,小程序环境使用轮询)
3. 设备兼容性
- 低端设备检测和性能优化
- 网络环境自适应(2G/3G/4G/5G/WiFi)
- 刘海屏、折叠屏适配
- 安全区域处理
开发命令
# 安装依赖
npm install
# H5开发
npm run dev:h5
# 微信小程序开发
npm run dev:mp-weixin
# Android开发
npm run dev:app-android
# iOS开发
npm run dev:app-ios
# 代码检查
npm run lint
# 代码自动修复
npm run lint:fix
构建命令
# H5构建
npm run build:h5
# 微信小程序构建
npm run build:mp-weixin
# App构建
npm run build:app
开发规范
代码风格
- 使用 2 个空格缩进
- 使用单引号
- 不使用分号
- 组件名使用 PascalCase
- 文件名使用 kebab-case
目录规范
- 页面组件放在
pages/目录 - 通用组件放在
components/目录 - 工具函数放在
utils/目录 - 静态资源放在
static/目录
API 使用示例
import { api, storage } from '@/utils/request';
// 发起请求
const data = await api.getUserInfo();
// 设置缓存(30分钟过期)
storage.set('userInfo', data, 30 * 60);
// 获取缓存
const cachedData = storage.get('userInfo');
SSE 实时数据示例
import { messageManager } from '@/utils/sse';
// 连接实时消息
messageManager.connect('userId123');
// 订阅消息
messageManager.subscribe('notification', (data) => {
console.log('收到通知:', data);
});
// 断开连接
messageManager.disconnect();
设备适配示例
import { deviceUtils, adaptUtils } from '@/utils/device';
// 检测设备类型
const deviceType = deviceUtils.getDeviceType();
// 获取安全区域样式
const safeAreaStyle = adaptUtils.getSafeAreaStyle();
// 判断是否为低端设备
const isLowEnd = deviceUtils.isLowEndDevice();
注意事项
- 图标资源: 当前底部导航使用文字显示,实际开发时需要替换为对应的图标文件
- API 地址: 请在
utils/request.js中配置正确的后端 API 地址 - SSE 服务: SSE 功能需要后端支持,在小程序环境会自动降级为轮询
- 权限配置: 使用定位、相机等原生功能时需要在
manifest.json中配置相应权限
下一步开发
- 根据设计原型完善页面 UI
- 接入后端 API 接口
- 添加具体业务功能模块
- 配置推送、定位等原生能力
- 添加图标资源文件
- 完善错误处理和用户反馈