shop-web/doc/项目概述.md

204 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

# 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)