Browse Source

提交md文档

master
前端-胡立永 1 week ago
parent
commit
643525f76e
1 changed files with 333 additions and 2 deletions
  1. +333
    -2
      README.md

+ 333
- 2
README.md View File

@ -1,3 +1,334 @@
# jewelry-front
# 珠宝商城项目文档
珠宝小程序前端代码
## 项目概述
本项目是一个基于uni-app开发的珠宝商城小程序,采用Vue框架开发,集成了完整的商城功能模块。
## 目录结构
```
├── api # API接口目录
│ ├── api.js # API统一出口
│ ├── http.js # HTTP请求封装
│ └── model # 业务模块API
├── components # 公共组件
├── mixins # 混入文件
├── pages # 页面文件
├── static # 静态资源
├── store # Vuex状态管理
├── utils # 工具函数
└── uni_modules # uni-app插件模块
```
## 核心模块详解
### 1. Mixins 混入
#### 1.1 list.js - 列表数据加载混入
提供列表数据的加载、分页、下拉刷新、上拉加载更多等功能。
**主要功能:**
- 统一的分页参数处理
- 下拉刷新和上拉加载更多
- 数据加载状态管理
**使用示例:**
```javascript
// 在页面中使用list混入
import listMixin from '@/mixins/list.js'
export default {
mixins: [listMixin],
data() {
return {
// 指定API接口
mixinsListApi: 'product.list'
}
}
}
```
#### 1.2 configList.js - 全局配置混入
已全局引入的配置管理混入,无需手动引入即可使用。
**主要功能:**
- 统一的分享配置
- 全局配置管理
- 用户信息关联
**配置参数:**
```javascript
// 分享配置示例
this.Gshare.title = '分享标题'
this.Gshare.path = '分享路径'
```
### 2. API 模块
#### 2.1 http.js - 请求封装
统一的HTTP请求处理,包含:
- 请求拦截器
- 响应拦截器
- 统一的错误处理
- Token管理
#### 2.2 api.js - 接口管理
统一管理API接口,支持模块化组织。API模块采用分层结构,便于维护和扩展。
**目录结构:**
```
api/
├── api.js # API统一出口
├── http.js # HTTP请求封装
└── model/ # 业务模块API
├── product.js # 商品相关接口
├── order.js # 订单相关接口
└── user.js # 用户相关接口
```
**接口定义示例:**
```javascript
// api/model/product.js
export default {
// GET请求示例
list: {
url: '/api/product/list',
method: 'GET',
loading: true // 显示加载提示
},
// POST请求示例
create: {
url: '/api/product/create',
method: 'POST',
loading: true
},
}
```
**调用接口示例:**
```javascript
// 1. 基础列表查询
this.$api('product.list', {
pageNo: 1,
pageSize: 10,
categoryId: '123'
}, res => {
// 处理列表数据
})
// 2. 创建商品
this.$api('product.create', {
name: '商品名称',
price: 99.99,
description: '商品描述'
}, res => {
if (res.code === 0) {
// 创建成功
uni.showToast({ title: '创建成功' })
}
})
```
### 3. 公共代码
#### 3.1 工具函数 (utils)
- authorize.js: 授权处理
- pay.js: 微信网页支付相关
- utils.js: 通用工具函数
- timeUtils.js: 时间处理
- position.js: 定位与位置计算
**使用示例:**
```javascript
// 时间格式化
const formattedTime = this.$timeUtils.formatTime(new Date())
// 微信网页支付调用
import { wxPay } from '@/utils/pay'
wxPay(orderData)
```
#### 3.2 公共组件
- navbar.vue: 自定义导航栏
- tabbar.vue: 底部导航栏
- productItem.vue: 商品列表项
**使用示例:**
```html
<template>
<view>
<navbar title="商品列表" />
<product-item
v-for="item in list"
:key="item.id"
:product="item"
/>
</view>
</template>
```
## 最佳实践
### 1. 列表页面开发
```javascript
// pages/product/list.vue
import listMixin from '@/mixins/list.js'
export default {
mixins: [listMixin],
data() {
return {
mixinsListApi: 'product.list',
queryParams: {
pageNo: 1,
pageSize: 10,
categoryId: ''
}
}
},
methods: {
// 分类切换
onCategoryChange(categoryId) {
this.queryParams.categoryId = categoryId
this.getData()
}
}
}
```
### 2. 详情页面开发
```javascript
// pages/product/detail.vue
import configMixin from '@/mixins/configList.js'
export default {
mixins: [configMixin],
data() {
return {
productId: '',
detail: {}
}
},
onLoad(options) {
this.productId = options.id
this.getDetail()
},
methods: {
getDetail() {
this.$api('product.detail', {
id: this.productId
}, res => {
this.detail = res.result
// 设置分享信息
this.Gshare.title = this.detail.name
this.Gshare.path = `/pages/product/detail?id=${this.productId}`
})
}
}
}
```
## 注意事项
1. 使用mixins时注意命名冲突
2. API调用建议统一使用this.$api方式
3. 页面开发建议继承相应的混入来复用通用功能
## 常见问题
1. 列表加载失败
- 检查mixinsListApi是否正确配置
- 确认网络请求是否正常
- 查看请求参数格式是否正确
## 分包结构说明
### pages_order分包
分包是小程序优化加载性能的重要手段,pages_order作为独立分包,包含以下模块:
```
├── auth # 认证相关页面
│ ├── loginAndRegisterAndForgetPassword.vue # 登录注册
│ ├── wxLogin.vue # 微信登录
│ └── wxUserInfo.vue # 微信用户信息
├── components # 分包内公共组件
│ ├── address/ # 地址选择组件
│ ├── areaSelector/ # 区域选择器
│ └── product/ # 商品相关组件
├── home # 首页相关
│ ├── addEnterprise.vue # 添加企业
│ ├── contact.vue # 联系我们
│ ├── introduce.vue # 介绍页面
│ ├── journalism.vue # 新闻资讯
│ └── notice.vue # 公告
├── mine # 我的模块
│ ├── address.vue # 收货地址
│ ├── balance.vue # 余额
│ ├── commission.vue # 佣金
│ ├── coupon.vue # 优惠券
│ ├── memberCenter.vue # 会员中心
│ └── more... # 更多功能页面
├── order # 订单模块
│ ├── createOrder.vue # 创建订单
│ ├── orderDetail.vue # 订单详情
│ └── giftList.vue # 礼品列表
├── product # 商品模块
│ └── productDetail.vue # 商品详情
└── static # 分包静态资源
├── address/ # 地址相关图片
├── auth/ # 认证相关图片
├── coupon/ # 优惠券图片
└── more... # 其他静态资源
```
**分包特点:**
- 静态资源就近原则:分包相关的图片等静态资源存放在分包目录下,避免主包体积过大
- 模块化组织:按功能模块划分目录,便于维护和管理
- 组件复用:分包内的通用组件集中管理,提高代码复用性
## 配置文件说明
### config.js
项目核心配置文件,包含以下配置:
**1. 环境配置**
```javascript
// 当前环境
const type = 'prod'
// 环境配置
const config = {
dev: {
baseUrl: 'http://h5.xzaiyp.top/jewelry-admin',
},
prod: {
baseUrl: 'https://jewelry-admin.hhlm1688.com/jewelry-admin',
}
}
```
**2. 默认配置**
```javascript
const defaultConfig = {
// 腾讯地图Key
mapKey: 'XMBBZ-BCPCV-SXPPQ-5Y7MY-PHZXK-YFFVU',
// 阿里云OSS配置
aliOss: {
url: 'https://image.hhlm1688.com/',
config: {
region: 'oss-cn-guangzhou',
accessKeyId: '***',
accessKeySecret: '***',
bucket: 'hanhaiimage',
endpoint: 'oss-cn-shenzhen.aliyuncs.com',
}
},
}
```
**3. UI框架配置**
```javascript
uni.$uv.setConfig({
config: {
unit: 'rpx' // 设置默认单位
},
})
```

Loading…
Cancel
Save