- 微信⼩程序商城项⽬逐字稿
关键技术
优购 是⼀个使⽤uniapp+uview架构实现的⼩程序电商项⽬。我们主要⽤到了以下关键技术
- 考虑到代码的可扩展性,我们使⽤的是 vscode + 脚⼿架的⽅式创建和开发uniapp‘项⽬’,并没有使
⽤hbuilderX(脚⼿架创建的项⽬和hbuilderX创建的项⽬不直接兼容)
-
uniapp ,它是⼀个vue语法全端开发框架,内置的uniapi可以直接兼容到各种客户端
-
uview , 它是和uniapp配套的全端UI框架,内置的组件和功能可以直接被打包到各种客户端
-
我们⼀共⽤到的技术有
关键技术
Plain Text
复制代码
uniapp的uniapi(如弹出窗⼝,全屏预览图⽚、本地存储等),直接promise和跨端
uview内置样式、按钮、图⽚、轮播图、富⽂本、拦截器、内置模版 以及 本地存储 和 vuex
1
2⾸⻚
-
我们打开⼩程序时,会先进⼊到商城的⾸⻚,此时⽤户是以游客身份来预览⻚⾯的。
-
其中我们会通过 uview提供的内置组件如轮播图、导航标签、图⽚标签和内置样式类技术等来动态渲
染⾸⻚数据
- ⽤户点击其中的导航标签会跳转到对应的如商品分类、商品列表或者商品详情等⻚⾯
商品分类
- 商品分类⻚⾯实现了电商分类⻚⾯经典的布局⽅案 - 类似京东分类、淘宝分类,左侧菜单固定宽度
+右侧内容动态宽度
- ⻚⾯打开时,我们会先请求商品所有的分类菜单数据,然后将它渲染到⻚⾯上,接着当我们点击不同
的分类菜单时,就会发送新的请求获取对应的商品数据
-
此时,⽤户点击商品数据时,便会跳转到商品列表⻚⾯
-
考虑到更好的体验,我们在获取数据之后,可以带上⼀个⽇期时间⼀并存⼊到本地存储中,下次发送
请求前先判断是否过期,如果不过期,就使⽤本地存储的,如果过期就重新发送⽹络请求
商品列表
商品列表⼀共分有三⼤功能
- 使⽤uview的tab组件实现切换列表商品功能,可以根据关键字综合或者销量或者价格来切换商品列
表
- 其中还实现了⻚⾯上拉分⻚功能,我们可以借助⼩程序内置的⻚⾯上拉或者 scroll-view标签的上拉
2事件实现分⻚功能。来发送分⻚请求时,我们会先判断是否还存在下⼀⻚数据,如果存在发送请求,
不存在就提示⽤户没有商品
- ⻚⾯下拉刷新功能,我们需要在⻚⾯配置⽂件中开启允许⻚⾯下拉的配置,然后在⻚⾯中定义⻚⾯下
拉事件,接着在事件中 重置数据,如商品列表数组、⻚码、查询参数等,重置完毕后就可以发送请
求获取最新商品数据
商品详情
商品详情⻚⾯主要分为了数据展示和添加购买商品功能
- 其中数据展示 我们使⽤了轮播图、富⽂本组件来渲染⻚⾯,还调⽤了⼩程序的全屏预览图⽚的api
(previewImage)实现点击全屏预览图⽚功能
-
⻚⾯底部的购物栏结构我们是使⽤了uview提供的模版快速实现
-
点击 购物⻋按钮时 使⽤了vuex来全局存储购物⻋数据,我们会发送异步请求来完成加⼊购物⻋功
能,同时会把购物⻋数据存储在vuex中
-
点击 购买 时,则会直接调起微信⽀付api完成⽀付功能。 (⽀付流程会在⽀付⻚⾯详细讲解)
-
点击 联系客服 则会使⽤⼩程序内置的 功能来实现联系客服
购物⻋
购物⻋⻚⾯主要是对商品数据进⾏编辑
-
我们会中vuex中读取出购物⻋数据,然后渲染显示到⻚⾯中
-
通过vuex中的action发起异步请求来操作购物⻋数据,中间有实现了商品的数量的编辑、选中和滑动
删除商品功能
- 通过vuex中getters功能实现计算商品总⾦额、计算结算商品数量、全选框全选功能
3获取token
因为token需在在全局中都可以使⽤,所以我们存放token的位置放在了vuex中,并且在请求拦截器⾥实
现了根据url⾃动携带token。获取token在vuex中的actons中实现的
-
⾸次执⾏wx.login 或者⼩程序的临时登录凭据 code
-
然后执⾏ wx.getUserProfile 获取⽤户信息
-
将以上两个数据 发送给我们的后端,换取 token并且存储起来
⽀付
当我们在购物⻋⻚⾯编辑待⽀付的商品时,点击⽀付按钮便开始执⾏⽀付流程
-
我们先调⽤了⼩程序中的获取收货地址api,获取到⽤户的收货地址信息
-
然后判断⽤户是否已经登录(是否获取到了token),未登录则调⽤actions中的⽅法获取token
-
获取到待⽀付的商品信息 调⽤后端的⽣成订单接⼝,获取订单编号
-
根据订单编号 来调⽤后端的⽀付接⼝,返回⽀付⾦额等相关信息
-
根据⽀付信息 调起微信⼩程序内置的⽀付接⼝ requestPayment 完成⽀付
-
⽀付完毕后,查询订单状态,根据订单状态 弹出提示信息
订单查询
订单查询⻚⾯分成了 全部订单、待⽀付订单、待发货订单 ⼏个分类。传⼊不同参数,返回和显示对应数
据
4商品搜索
我们封装了⼀个全局搜索组件,在⾸⻚、分类、商品列表中都使⽤到了。当点击该组件时,会跳转到商
品搜索⻚⾯
-
商品搜索⻚⾯会根据⽤户输⼊的关键字来查询对应的商品列表
-
为了提⾼⽤户的体验和服务器的性能,我们在这⾥使⽤了防抖的技术,避免⽤户频繁输⼊导致出现体
验不好的情况。(频繁发送⽹络请求,堵塞⽹络、⻚⾯频繁显示最新列表,切换过快)
个⼈中⼼
个⼈中⼼⻚⾯主要是做信息展示
-
展示⽤户信息-头像和昵称
-
展示订单信息 待付款、待收货、全部订单、退货退款等
-
联系客服(⼩程序内置的api contact)
-
意⻅反馈 (⼩程序内置的api feedback)
-
版本信息