# Wx_Program
**Repository Path**: chen-hongxin/wx_-program
## Basic Information
- **Project Name**: Wx_Program
- **Description**: 一个购物商城微信小程序项目,各功能较为完善
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 7
- **Forks**: 1
- **Created**: 2021-06-18
- **Last Updated**: 2025-07-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 微信小程序
## README
# 红心优购
## 介绍
一个购物商城微信小程序项目,各功能较为完善
## 使用说明
直接使用微信开发者工具运行即可
## 接口文档
[https://www.showdoc.com.cn/128719739414963/2513282464078443](https://www.showdoc.com.cn/128719739414963/2513282464078443)
## 帮助文档
- [小程序开发文档](https://developers.weixin.qq.com/miniprogram/dev/framework/)
- [阿⾥巴巴字体 iconfont](https://www.iconfont.cn/)
## 项目搭建
### 目录结构
|-- pages
|-- components(存放组件)
|-- icons(存放图标【可从阿里巴巴字体图标网站引入】)
|-- lib(存放第三方库)
|-- request(自写的接口帮助库)
|-- styles(存放公共样式)
|-- utils(自写的帮助库)
|-- typings(微信小程序的 typescript 声明文件)
### 项目页面
|-- pages
| |-- auth(授权页面)
| |-- cart(购物车页面)
| |-- category(分类页面)
| |-- collect(收藏页面)
| |-- feedback(意见反馈页面)
| |-- goods_detail(商品详情页面)
| |-- goods_list(商品列表页面)
| |-- index(首页)
| |-- login(登陆页面)
| |-- order(订单页面)
| |-- pay(结算页面)
| |-- search(搜索页面)
| |-- user(个人中心)
### 搭建 tabBar 结构(app.json 文件中)
```
"tabBar": {
"color": "#999",
"selectedColor": "#ff2d4a",
"backgroundColor": "#fafafa",
"position": "bottom",
"borderStyle": "black",
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "icons/home.png",
"selectedIconPath": "icons/home-o.png"
}, {
"pagePath": "pages/category/index",
"text": "分类",
"iconPath": "icons/category.png",
"selectedIconPath": "icons/category-o.png"
}, {
"pagePath": "pages/cart/index",
"text": "购物车",
"iconPath": "icons/cart.png",
"selectedIconPath": "icons/cart-o.png"
}, {
"pagePath": "pages/user/index",
"text": "我的",
"iconPath": "icons/my.png",
"selectedIconPath": "icons/my-o.png"
}
]
},
```
## 项目开发细节
### 1. 首页
#### 1.1 效果图

#### 1.2 业务逻辑
- tabBar 实现底部导航栏
- 自定义组件 SearchInput 实现头部搜索框
- 加载“轮播图”数据(后面所跟的是获取数据所使用的接口) => [https://api.zbztb.cn/api/public/v1/home/swiperdata](https://api.zbztb.cn/api/public/v1/home/swiperdata)
- 加载“导航”数据 => [https://api-hmugo-web.itheima.net/api/public/v1/home/catitems](https://api-hmugo-web.itheima.net/api/public/v1/home/catitems)
- 加载“楼层”数据 => [https://api.zbztb.cn/api/public/v1/home/floordata](https://api.zbztb.cn/api/public/v1/home/floordata)
#### 1.3 关键技术
- 小程序内置 **request API**
- ES6 的 `Promise` 函数
- 小程序内置组件 **swiper**
- 自定义组件 **SearchInput**
### 2. 分类页面
#### 2.1 效果图

#### 2.2 业务逻辑
- 初始状态,右侧页面加载左侧菜单首标签对应的数据
- 点击左侧菜单的不同标签,右侧页面动态渲染不同的数据
- “分类页面”数据 => [https://api-hmugo-web.itheima.net/api/public/v1/categories](https://api-hmugo-web.itheima.net/api/public/v1/categories)
#### 2.3 关键技术
- 小程序内置组件 **scroll-view**
- **ES7** 的 `async` 和 `await`( **ES7** 的 `async` 号称解决回调的最终方案)
#### 2.4 小程序中使用` async` 语法
- 微信开发者工具右上角的详情 -> 本地设置 -> 将 JS 编译成 ES5(勾选)
- 在小程序目录下新建文件 `lib/runtime/runtime.js`
- 将 **Facebook** 的 **regenerator** 库中,以下文件中的代码拷贝进上一步新建的文件中 [regenerator/packages/regenerator-runtime/runtime.js](https://github.com/facebook/regenerator/blob/5703a79746fffc152600fdcef46ba9230671025a/packages/regenerator-runtime/runtime.js)
- 在每一个需要使用 `async` 语法的 `.js` 文件中引入:
`import regeneratorRuntime from '../../lib/runtime/runtime';`
注意:不能全局引入
### 3. 商品列表页面
#### 3.1 效果图

#### 3.2 业务逻辑
- 加载“商品列表”数据 => [https://api.zbztb.cn/api/public/v1/goods/search](https://api.zbztb.cn/api/public/v1/goods/search)
- 启用页面下拉刷新功能
- 页面的 **json** 文件中设置 `enablePullDownRefresh:true `
- 页面的 **js** 文件中,绑定事件 `onPullDownRefresh`
- 启用页面上拉触底“加载更多”功能
- 页面的 **js** 文件中,绑定事件 `onReachBottom`
- 加载下一页数据
#### 3.3 关键技术
- 小程序 **json** 配置文件中启用 **上拉加载** 和 **下拉加载** 功能
- 自定义组件 **SearchInput** 和 **Tabs**
### 4. 商品详情页面
#### 4.1 效果图

#### 4.2 业务逻辑
- 渲染商品详情数据 => [https://api.zbztb.cn/api/public/v1/goods/detail](https://api.zbztb.cn/api/public/v1/goods/detail)
- 实现全屏预览图片功能
- 点击“收藏”按钮,收藏商品
- 联系客服
- 分享
- 加入购物车(使用本地存储来维护购物车数据)
- 立即购买(使用到 [创建订单接口](https://api-hmugo-web.itheima.net/api/public/v1/my/orders/create))
#### 4.3 关键技术
- **swiper** 组件
- “图片预览功能”使用了微信小程序内置 **API** [wx.previewImage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html)
- 本地存储实现“收藏”功能
- “联系客服”与“分享功能”使用了 `button` 按钮的内置函数
- “图文详情”部分使用了 **富文本标签** 渲染 **富文本**
### 5. 商品收藏页面
#### 5.1 效果图

#### 5.2 业务逻辑
- 获取本地存储中相应的数据进行渲染
- 点击收藏页中的不同商品可以跳转到对应的商品详情页面
#### 5.3 关键技术
- 从本地存储中加载数据
### 6. 购物车页面
#### 6.1 效果图
.jpg")
#### 6.2 业务逻辑
- 渲染购物车中的商品数据(数据从本地存储获得)
- 添加收货地址
- 修改商品数量
- 单选和全选功能
- 结算功能(跳转到支付页面)
#### 6.3 关键技术
- 从本地存储中加载数据
- “添加收货地址”功能使用了微信小程序内置 **API** [wx.chooseAddress(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/address/wx.chooseAddress.html)
- 小程序 **复选框** 组件
### 7. 支付页面
#### 7.1 效果图

#### 7.2 业务逻辑
- 获取收货地址
- 渲染购物车中要结算的商品数据
- 支付功能(暂未实现)
- ① 获取微信的登录信息
- ② 获取后台返回的支付相关参数
- ③ 调用微信接口实现 **支付**
- ④ 支付成功创建订单
- ⑤ 跳转到订单页面
#### 7.3 支付流程
7.3.1 示意图

7.3.2 有关接口
- ① 获取预支付参数 => https://api.zbztb.cn/api/public/v1/my/orders/req_unifiedorder
- ② 创建订单 => https://api.zbztb.cn/api/public/v1/my/orders/create
- ③ 更新订单状态 => https://api.zbztb.cn/api/public/v1/my/orders/chkOrder
#### 7.3 关键技术
- 小程序 [支付 API](http://https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/wechatpay/wechatpay.html)
### 8. 授权页面(暂未实现)
#### 8.1 效果图
无
#### 8.2 业务逻辑
.jpg")
8.2.1 获取用户信息
- 返回 `encryptedData、rawData、iv、signature`
8.2.2 小程序登录
- 返回 `code`
8.2.3 执行 **post** 请求,提交数据到后台
- 提交数据 `encryptedData、rawData、iv、signature` 到后台,返回 **token**
- 所用的接口为 https://api.zbztb.cn/api/public/v1/users/wxlogin
### 9. 订单列表页面(暂未实现)
#### 9.1 效果图
无
#### 9.2 业务逻辑
- 根据不同的状态去加载不同的订单数据 => https://api.zbztb.cn/api/public/v1/my/orders/all
#### 9.3 关键技术
- ⾃定义组件,⽗向⼦动态传参 `this.selectComponent("#tabs")`
- **时间戳** 格式化处理
### 10. 搜索中心页面
#### 10.1 效果图

#### 10.2 业务逻辑
- 获取输入框的值返回给后台进行搜索 => https://api.zbztb.cn/api/public/v1/goods/qsearch
- 将后台返回的数据渲染到页面上
- 点击“取消”按钮时,清除输入状态
#### 10.3 关键技术
- 防抖技术
## 11. 个人中心页面
#### 11.1 效果图

#### 11.2 业务逻辑
- 获取用户登录信息
- 加载商品收藏信息(数据从本地存储中获取)
- 查询订单信息(未实现) => https://api.zbztb.cn/api/public/v1/my/orders/all
#### 11.3 关键技术
- 获取用户登录信息使用了小程序内置 **API** [wx.getUserInfo(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html)
- [CSS3 filter(滤镜) 属性](https://www.runoob.com/cssref/css3-pr-filter.html)
### 12. 意见反馈页面
#### 12.1 效果图
.jpg")
#### 12.2 业务逻辑
- 点击 **“按钮 +”** 可以选择本地图片,显示到页面上
- 点击图片,会移除
#### 12.3 关键技术
- 自定义组件 **Tabs**
- 小程序内置的选择图片 **API** [wx.chooseImage(Object object)](https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html)