204 lines
4.9 KiB
Markdown
204 lines
4.9 KiB
Markdown
|
|
# MobVue 项目文档
|
|||
|
|
|
|||
|
|
## 项目概述
|
|||
|
|
|
|||
|
|
MobVue 是一个精心制作的移动端 H5 应用模板,基于 Vue3、Vite、TypeScript、Vant 等主流技术栈开发。本项目是一个电商/柜机管理系统,支持微信和企业微信登录,具备完整的用户认证、商品管理、订单处理、审批流程等功能。
|
|||
|
|
|
|||
|
|
## 项目特性
|
|||
|
|
|
|||
|
|
### 🔥 技术特性
|
|||
|
|
- **Vue3**: 采用最新的 Composition API 和 script setup 语法
|
|||
|
|
- **TypeScript**: 严格模式,无 `any` 类型
|
|||
|
|
- **Vite**: 极速的开发体验和构建性能
|
|||
|
|
- **Vant**: 轻量、可定制的移动端 Vue 组件库
|
|||
|
|
- **Pinia**: 现代化的状态管理
|
|||
|
|
- **UnoCSS**: 高性能的原子化 CSS 引擎
|
|||
|
|
|
|||
|
|
### 📱 移动端适配
|
|||
|
|
- **Px2Vw**: 自动将 px 转换为 vw 单位
|
|||
|
|
- **宽屏友好**: 适配各种屏幕尺寸
|
|||
|
|
- **浏览器兼容**: 支持多种浏览器和低版本
|
|||
|
|
|
|||
|
|
### 🔒 安全与权限
|
|||
|
|
- **页面级权限**: 路由守卫控制页面访问
|
|||
|
|
- **按钮级权限**: 细粒度的操作权限控制
|
|||
|
|
- **微信认证**: 支持微信和企业微信登录
|
|||
|
|
- **防御水印**: 防止敏感信息泄露
|
|||
|
|
|
|||
|
|
### 🧩 业务功能
|
|||
|
|
- **商品管理**: 商品列表、详情展示
|
|||
|
|
- **订单系统**: 订单创建、结算、详情查看
|
|||
|
|
- **柜机管理**: 智能柜机绑定和管理
|
|||
|
|
- **审批流程**: 审批申请、处理、核销
|
|||
|
|
- **用户中心**: 个人信息、余额管理
|
|||
|
|
|
|||
|
|
## 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
src/
|
|||
|
|
├── common/ # 通用模块
|
|||
|
|
│ ├── apis/ # API 接口
|
|||
|
|
│ ├── assets/ # 静态资源
|
|||
|
|
│ ├── composables/ # 组合式函数
|
|||
|
|
│ ├── components/ # 通用组件
|
|||
|
|
│ └── utils/ # 工具函数
|
|||
|
|
├── layout/ # 布局组件
|
|||
|
|
├── pages/ # 页面组件
|
|||
|
|
├── pinia/ # 状态管理
|
|||
|
|
├── router/ # 路由配置
|
|||
|
|
├── http/ # HTTP 请求
|
|||
|
|
└── plugins/ # 插件配置
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 环境要求
|
|||
|
|
- Node.js 20.x 或 22+
|
|||
|
|
- pnpm 9.x 或 10+
|
|||
|
|
- 最新版 Visual Studio Code
|
|||
|
|
|
|||
|
|
### 安装依赖
|
|||
|
|
```bash
|
|||
|
|
pnpm i
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 开发环境
|
|||
|
|
```bash
|
|||
|
|
pnpm dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 构建项目
|
|||
|
|
```bash
|
|||
|
|
# 预发布环境
|
|||
|
|
pnpm build:staging
|
|||
|
|
|
|||
|
|
# 生产环境
|
|||
|
|
pnpm build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 代码检查
|
|||
|
|
```bash
|
|||
|
|
# 代码校验与格式化
|
|||
|
|
pnpm lint
|
|||
|
|
|
|||
|
|
# 单元测试
|
|||
|
|
pnpm test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 核心模块说明
|
|||
|
|
|
|||
|
|
### 1. 路由系统 (src/router/)
|
|||
|
|
- **一级路由设计**: 清晰且缓存友好
|
|||
|
|
- **权限守卫**: 页面访问权限控制
|
|||
|
|
- **布局配置**: 可配置的导航栏和标签栏
|
|||
|
|
|
|||
|
|
### 2. 状态管理 (src/pinia/)
|
|||
|
|
- **用户状态**: 用户信息、登录状态
|
|||
|
|
- **微信状态**: 微信认证相关状态
|
|||
|
|
- **购物车**: 商品选择和结算
|
|||
|
|
- **订单状态**: 订单处理流程
|
|||
|
|
|
|||
|
|
### 3. API 管理 (src/common/apis/)
|
|||
|
|
- **用户接口**: 登录、用户信息
|
|||
|
|
- **商品接口**: 商品列表、详情
|
|||
|
|
- **订单接口**: 订单创建、查询
|
|||
|
|
- **柜机接口**: 柜机管理
|
|||
|
|
- **审批接口**: 审批流程
|
|||
|
|
|
|||
|
|
### 4. 布局系统 (src/layout/)
|
|||
|
|
- **导航栏**: 自定义标题和返回按钮
|
|||
|
|
- **标签栏**: 底部导航切换
|
|||
|
|
- **响应式**: 适配不同页面需求
|
|||
|
|
|
|||
|
|
## 开发指南
|
|||
|
|
|
|||
|
|
### 添加新页面
|
|||
|
|
1. 在 `src/pages/` 下创建 Vue 组件
|
|||
|
|
2. 在 `src/router/index.ts` 中添加路由配置
|
|||
|
|
3. 配置页面元信息 (meta)
|
|||
|
|
|
|||
|
|
### 状态管理
|
|||
|
|
使用 Pinia 进行状态管理,遵循组合式 API 规范:
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
export const useMyStore = defineStore("myStore", () => {
|
|||
|
|
const state = ref<StateType>(initialValue)
|
|||
|
|
|
|||
|
|
const action = () => {
|
|||
|
|
// 业务逻辑
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return { state, action }
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API 开发
|
|||
|
|
API 接口统一在 `src/common/apis/` 目录下管理:
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
export const getDataApi = (params: ParamsType) => {
|
|||
|
|
return request<ResponseType>({
|
|||
|
|
url: "/api/data",
|
|||
|
|
method: "GET",
|
|||
|
|
params
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 样式规范
|
|||
|
|
- 使用 UnoCSS 原子化类名
|
|||
|
|
- 优先使用预设的快捷方式
|
|||
|
|
- 自定义样式在 CSS 变量中定义
|
|||
|
|
|
|||
|
|
## 部署说明
|
|||
|
|
|
|||
|
|
### 环境变量
|
|||
|
|
项目支持多环境配置,通过 `.env` 文件管理:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
VITE_BASE_URL=接口基础地址
|
|||
|
|
VITE_PUBLIC_PATH=公共路径
|
|||
|
|
VITE_ROUTER_HISTORY=路由模式
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 构建优化
|
|||
|
|
- 代码分割:Vue 相关库独立打包
|
|||
|
|
- 压缩优化:移除 console 和 debugger
|
|||
|
|
- 浏览器兼容:传统浏览器支持
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### 微信认证问题
|
|||
|
|
- 确保微信回调地址配置正确
|
|||
|
|
- 检查企业微信 corpid 配置
|
|||
|
|
- 验证 openid 获取逻辑
|
|||
|
|
|
|||
|
|
### 权限控制
|
|||
|
|
- 页面权限在路由守卫中控制
|
|||
|
|
- 按钮权限使用自定义指令
|
|||
|
|
- 角色权限在用户信息中配置
|
|||
|
|
|
|||
|
|
### 移动端适配
|
|||
|
|
- 使用 vw 单位进行响应式设计
|
|||
|
|
- 测试不同屏幕尺寸的显示效果
|
|||
|
|
- 确保触摸交互的流畅性
|
|||
|
|
|
|||
|
|
## 贡献指南
|
|||
|
|
|
|||
|
|
### 代码提交规范
|
|||
|
|
- `feat`: 新功能
|
|||
|
|
- `fix`: 修复错误
|
|||
|
|
- `perf`: 性能优化
|
|||
|
|
- `refactor`: 重构代码
|
|||
|
|
- `docs`: 文档和注释
|
|||
|
|
- `test`: 单元测试相关
|
|||
|
|
|
|||
|
|
### 开发流程
|
|||
|
|
1. Fork 项目
|
|||
|
|
2. 创建功能分支
|
|||
|
|
3. 提交代码变更
|
|||
|
|
4. 创建 Pull Request
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
[MIT License](./LICENSE) © 2025-PRESENT [pany](https://github.com/pany-ang)
|