本文最后更新于:2024-11-02T17:08:04+08:00
从零开始,搭建一个简单的购物平台(十八)前端商城部分:
https://blog.csdn.net/time_____/article/details/108918489
项目源码(持续更新):https://gitee.com/DieHunter/myCode/tree/master/shopping
上篇文章后,前端商城部分基本功能已实现,包括商品列表,商品分类,首页商品展示,商品详情,购物车,用户登录注册,剩余内容:用户信息修改,提交订单,订单展示等,这篇文章将对剩余功能部分完结。
用户信息修改的后端接口已经在管理平台实现,这里直接进行验证调用即可
之前的修改用户信息功能在测试中体现出来了一个bug,因为生成Token的字段是用户名,当修改用户信息时,如果修改了用户名,就会导致token验证失败,于是我们需要修复token生成方式,将之前的用户名生成改成_id生成,新版代码已经提交至码云
修复后效果:
下面介绍一下实现流程 ,这里我们把info用户信息界面和登录界面放在单页面中,通过v-if条件渲染,条件是checkToken是否通过
bussiness.js,验证token是否有效
info.vue组件
在用户登录成功后,我们需要一个组件显示用户信息,这个没有任何逻辑,纯渲染,所以暂不做介绍
通过点击头像框路由跳转至UpdateInfo,用户信息修改页,我们将头像上传单独写成组件
这里有一个原生js上传文件的坑:
axios上传post文件头文件需模拟”multipart/form-data”请求,而这种请求格式与application/x-www-form-urlencoded有所不同,需要声明一个分隔符‘boundary’。
那么这时,坑人的地方来了,直接以ABC这种简单的分隔符内容上传文件可能会导致服务端对文件不识别,无法找到文件起始位置,所以我们需要一个复杂的字符,比如使用newDate().getTime()生成随机字符,修改后就有以下配置
上传头像组件中,我们要自己写一个控件替代官方的input元素,也就是点击图片使用JS执行input文件上传事件,并提交到服务端,服务端存好缓存后将图片文件地址发送到前端,前端读取文件并展示,以下是头像上传的所有过程
uploadPic.vue
bussiness.js
说完了上传头像组件后,来实现一下修改用户信息,之前上传的头像地址会通过组件传参传递到父组件中,伴随着其他信息一起提交到服务端,服务端将收到的头像缓存地址解析成文件并保存,修改用户信息组件中可以复用一个省市县选择器组件,即之前在商品详情中使用的商品数量选择,其他的表单元素都是基本的文本类型
updataForm.vue
bussiness.js
用户信息修改就介绍到这里,下一步将对项目的最后一步订单的前端部分进行分享
订单的后端逻辑与接口在管理系统中已经介绍完毕,前端部分就是很简单的数据渲染和状态修改
首先,订单是基于用户和商品绑定的,所以,我们在购物车中实现新增订单功能,添加成功后跳转至订单查询界面,除此之外,在用户信息界面,添加用户的所有订单列表可以查看和付款(由于只是一个项目案例,所以这里没有实现支付功能)
orderList.vue组件,几乎都是页面渲染,没有什么逻辑功能,就不做说明
获取订单列表和提交订单支付状态的bussiness.js
订单功能完成
项目整体打包
通过运行 npm run build 进行webpack打包
生产环境部署可以参照我之前的一篇文章
如果需要配置https环境可以参照这篇文章
文件夹的命名规则以及模块组件的分配在这篇文章有说到
希望这个系列的文章对你有帮助,如果你阅读完了整个系列或者某篇文章,非常感谢你的支持
总结:到这篇博客为止,《从零开始,搭建一个简单的购物平台》系列的文章全部完结,以下是本人完成整个项目的一个小总结以及一些注意点:
- 搭建环境及配置文件:对自己的技术栈以及优势需要深入了解,并且选择最适合自己或者是产品需求所需要的技术,完成项目目录的搭建,比如前端最好养成模块化,组件化开发的习惯,尽量将文件夹以及文件细分到每个基本组件。
- 以组件和框架的官方文档为核心,学会自己上网查找问题,自己动手解决问题非常有必要。
- 学会造轮子,虽然网上有大量的框架,组件,别人写好的js库,但是自己动手写函数,封装功能以及组件是非常有必要的,并不是节省时间或者其他方面的原因,自己写能提升自己编程思路和实际应用能力,而且当自己写出了一个比较成功的类或者组件,甚至方法时,会有很大的成就感
- 面向对象编程语言,减少代码耦合度,提高内聚性,使代码健壮性更加强大,这点我自己正在努力改善,这样写代码有利于把很多方法剥离,可以提升复用性,减少代码量,说白了,一个项目别人可能只需要3000行代码,而我可能需要5000行
- 这个项目我是全栈完成的,采用的是前后端分离,但是实际开发中,前后端可能是两个或者多个人开发,这时需要自测接口及功能,前端搭建mock.js或使用easymock来进行模拟请求,后端可以使用postman,SoapUI等工具进行接口访问
- 前端和后端需要防止多次重复请求,前端通过节流的方式,防止对后端重复请求,但是也要防止数据库的恶意攻击(这个项目中没有实现),通过参数附带时间戳,使一个ip或者一个用户只能在短时间内请求规定次数
- 巧用前后端缓存,前端使用cookie和localstorage,后端生成temp缓存文件
- 前后端加密处理,token,Crypto加密参数,Bcrypt加密密码