YS分销商城是一款基于微信公众号的商城系统,其中后台的分销功能比较复杂,而移动端与后台管理在逻辑上则比较简单,但是本次开发用到了一些新的UI和技术,也出现了一些问题,所以在这里认真总结。

一、YS分销商城项目使用到的技术

前端的管理系统与移动端都使用了vue-element-admin作为基础架构。

在公司开发过程中,后台管理通常使用vue-element-admin,而移动端则不使用,本次开发过程中第一次使用vue-element-admin作为移动端的框架。不得不说vue-element-admin作为一款为vue定制服务的框架,拥有很多优秀的特性,拿来作为移动端开发也是非常合适的。

在后台管理系统中使用了element-ui作为ui组件,这是比较常见的用法;而在移动端的开发过程总,我们选择了vant(一款有赞前端团队封装的移动端组件),这款组件库的优势在于它封装了一些商城常用的组件,比如商品卡片,商品导航栏等。

由于商城系统存在分销和支付功能,所以在移动端的开发过程中,还使用到了微信提供的分享(用于分销功能)接口和支付接口。

二、开发过程中遇到的问题与收获

由于之前开发过类似的项目,只是移动端之前使用了jsp,本次开发使用的是vue-element-admin,所以开发中的一些技术和处理方式都借鉴了之前的项目,正是由于对微信公众号开发认识不够深入,导致造成了很多错误。而在后台开发过程中遇到的问题则比较少。下面总结一下开发过程中遇到的问题以及解决的方式。

1.微信公众号不支持vue的hash路由方式作为微信获取signature签名的url

微信官方提供的JS-SDK(微信公众平台面向网页开发者提供的基于微信内的网页开发工具包)中,需要开发人员通过config接口注入权限,在微信环境中正确获取权限后,才可以正确配置分享功能。在前端,我们通常使用微信提供的js文件进行参数的获取一下信息,这里不过多赘述了。在使用这个文件提供的获取信息的方法,我们需要传递两个参数,分别是当前页面的url地址与微信公众号的唯一身份证明appid,返回的数据则是以下几个参数。在使用这个方法的时候,我们传递的url这个参数,必须是不带“#”的地址,如果带了“#”,返回的signature签名就会是错误的,从而导致获取不到config接口的注入权限。

wx.config({debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: '', // 必填,公众号的唯一标识timestamp: , // 必填,生成签名的时间戳nonceStr: '', // 必填,生成签名的随机串signature: '',// 必填,签名jsApiList: [] // 必填,需要使用的JS接口列表
});

导致这个问题的原因就是在vue-router路由对象中,路由有两种模式:hash和history,而默认的是hash模式。在往常的项目开发中,我们在开发后台管理系统的时候通常不注重路由模式,使用的路由模式都是默认的hash模式,从来没有使用过history模式作为路由模式。简单来说,history模式较hash模式来说,在路由地址上去除了“#”,通过这样的改变,让路由地址符合获取signature签名的形式。

2.ios设备不支持使用当前页面url获取signature签名

在成功的解决了由于url地址中带有“#”造成的获取signature签名错误的问题后,又出现了另外一个比较严重的问题,就是ios设备在获取signature签名的时候,仍然不能正确获取到signature签名。这个问题是由于ios需要发送进入的第一个页面的url,作为获取signature签名的凭证,所以我们要在第一个页面就获取到url的地址,并且将它保存到内存中。在这里我们首先判断内存中是否已经存储了第一个页面的地址,如果没有存储,则将当前地址存入内存,通过这样的方式我们就可以成功获取到第一个页面的url了。

在获取到第一个页面的url地址之后,在使用获取微信签名的方法时,我们通过navigator.userAgent方法获取到设备信息,并且通过includes方法判断配置信息中是否存在“iPhone”与“iPad”字符串,如果存在则说明是ios设备,在这时我们获取signature签名时就是用第一个内存中存储的第一个页面的url地址,否则使用当前url地址。通过这样的处理方法后,我们就可以成功的对ios和Android设备进行获取正确的signature签名。

3.微信支付回调的使用

微信支付是我们在微信公众号商城系统中开发常用的一个接口,在之前的项目开发中也使用过微信支付接口,但是在本项目的开发过程中,由于在基础代码上犯了一个错误,并且微信支付只有在部署的线上环境才可以测试,所以一直没有关注到出现的问题,由于犯得错误比较低级,没有特别说明的必要,我在这里总结一下微信支付的接口使用以及回调的使用,加以总结,杜绝以后再犯类似错误。

微信支付接口使用时,和分享功能一样,需要配置参数,与分享不同的是,分享使用的是前端获取signature签名以及其他信息,而支付接口需要后台配合来获取这些信息,这样的获取方式保证了支付的安全性。在成功传入正确参数后,微信会调用支付模块来进行支付操作,在支付结束后,我们通过回调函数,可以对返回的信息进行处理,从而进行下一步操作。

微信支付结束后,会返回三种回调信息,分别是:get_brand_wcpay_request:ok(支付成功)get_brand_wcpay_request:cancel(支付取消)、get_brand_wcpay_request:fail(支付失败)以及total_fee(调用支付JSAPI缺少参数)。在开发过程中,我将这四种状态分为三种情况,分别是支付成功、已取消支付与支付失败。通过回调函数判断回调信息是否与对应信息相同,来对这些状态进行判断,并且进行回调。由于项目中在支付前就已经生成了订单,所以这三种状态我都处理为提示对应信息后跳转到订单页面。

WeixinJSBridge.invoke('getBrandWCPayRequest', {'appId': that.payInfo.appId,     //公众号名称,由商户传入'timeStamp': that.payInfo.timeStamp + '',//时间戳,自1970年以来的秒数'nonceStr': that.payInfo.nonceStr, //随机串'package': that.payInfo.package,'signType': that.payInfo.signType,//微信签名方式:'paySign': that.payInfo.sign, //微信签名},//回调函数function (res) {if (res.err_msg == "get_brand_wcpay_request:ok") {that.$toast.success('支付成功!');that.$router.replace({path: '/mine-order'});} else if (res.err_msg == "get_brand_wcpay_request:cancel") {that.$toast('已取消支付!');that.$router.replace({path: '/mine-order'});} else {that.$toast.fail('支付失败!');that.$router.replace({path: '/mine-order'});}});}).catch(() => {// on cancel})

4.vant组件的使用

本次开发是第一次使用vant组件,在之前的移动端开发过程中,我是用的比较多的是weui,weui作为微信公众号发开组件还是不错的,但是他也有很多问题,比如:组件样式过于单一,组件功能不全等,所以在使用的过程中可能需要很多其他第三方的库来进行补充。本次使用的vant组件是有赞商城前端开发团队封装的组件库,不仅提供了多种多样的组件,还提供了商城系统中常使用的商品卡片,商品导航栏等,为开发提供了很大的便利。但是由于vant组件官网给出的资料较少,而且有些组件封装的比较死,使用起来可能不太灵活,但是这完全不影响vant成为一款优秀的前端组件库。由于第一次使用vant,遇到了一些问题,下面加以总结。

(1).vant组件的引入

第一步,通过npm i vant -S在项目入安装vant组件。

第二部,在main.js文件中引用和使用vant组件。

通过安装以及全局引用vant组件,就可以在项目中使用vant组件了。

(2).组件中价格格式问题

之前的项目开发中,没有使用过封装起来的商品卡片,对于向内传值存在着误解,有一些组件需要传递以元为单位的价格,有些组件需要传递以分为单位的价格,一旦没有注意价格的格式,就会造成显示错误。而vant组件中的价格格式也不是固定的,在商品卡片中使用的是以元为单位的格式,而在提交订单栏使用了以分为单位的格式,不知道为什么vant团队这样封装,在使用过程中我比较迷惑。

//vant提供的商品卡片组件,价格以元为单位
<van-cardnum="2"price="2.00"desc="描述信息"title="商品标题"thumb="https://img.yzcdn.cn/vant/ipad.jpeg"
/>//vant提供的提交订单栏组件,价格以分为单位
<van-submit-bar:price="3050"button-text="提交订单"@submit="onSubmit"
/>

(3).组件中的样式问题

在使用vant的button按钮组件的过程中,遇到了一些问题,就是在自定义按钮内文字颜色的时候,使用行间样式或者一般的声明方法是不行的,在打包后会被vant组件自带的样式覆盖,所以要使用deep进行样式的声明。通过这样的方式,才能彻底改变组件文字颜色。

  .btn1 /deep/.van-button--danger .van-button__text{color: #ffffff !important;}.btn1 /deep/.van-button__text{color: #ffffff !important;}

由于vant组件是第一次使用,接触的时间也很短,在这里不能详细介绍所有的功能,在接下来的工作和学习中,会着重对vant组件进行学习和总结,在以后的文章中加以介绍。

5.element-ui使用过程中遇到的问题

element-ui是一款使用比较多,使用时间比较长的ui组件库,但是在本次开发过程中,遇到了一个小问题,在这里把它总结一下。

本次开发过程中,由于要对商品价格进行管理,所以使用了element-ui中的InputNumber计数器,在对价格进行管理的时候需要保留两位小数,InputNumber组件自身提供了一个数值精度的属性precision,可以通过这个属性来控制保留几位小数,但是在开发过程中发现,对于整数的数组,这个属性并不会发挥作用,比如:2.00这个数字,在赋值给绑定的对应变量时,会变成2。为了解决这个问题,在调用接口的时候,在需要保留两位小数点的变量后面加上Fixed(2),以保证传递的参数是正确的保留两位小数的数字。

三、本次项目开发的心得体会

这次项目的时间是在年底临近春节,项目要求比较急,并且第一次使用vant组件以及第一次使用vue-element-admin来作为移动端的框架,所以遇到了一些不太好解决的问题,在解决问题以及开发项目的过程中,我有一些体会以及对自己的反思。

首先,作为一名前端的开发人员,对于前端技术特别是基础的技术要熟练,这次项目由于一些技术上的不足,导致问题迟迟没有解决,非常的不应该。第二,对于一个技术或者一个库要深挖其中的原理和用法,要做到胸有成竹,只有这样在开发过程中才能顺利解决问题。第三,认识到了自己和其他优秀开发人员的差距,对于一些细节的问题很难及时发现,由于经验上的不足会对一些问题固步自封或者毫无头绪,这是开发经验上的不足,也是技术上的差距。

在这次项目结束后,要对技术上的不足之处多作提高,对于运用过的技术及时巩固,对于新技术及时学习,跟上时代的步伐,在一点一滴中积累和进步。

YS分销商城项目(前端)总结相关推荐

  1. 基于SSM框架的仿天猫商城项目(前端+后台)

    前言 项目可包部署(无需担心部署问题) Q 1115487855 交流群:758350964 一 项目介绍 模仿天猫项目SSM版(前端+后台) 所有源码+数据库文件+设计文档,加主页Q 项目可包远程部 ...

  2. 基于SpringBoot + Vue的小程序商城项目(附源码),支持分销、团购、秒杀、优惠券。。。...

    前些时候一直有粉丝让我分享带分销的商城项目,网上收集了一波,希望能帮到大家. 面向对象 该程序是企业在创立初期很好的技术基础框架,加快公司项目开发进度,当然也可以对现有的系统进行升级: 个人开发者也可 ...

  3. 基于SpringBoot vue的小程序商城项目(附源码),支持分销、团购

    来源:微同科技 前些时候一直有粉丝让我分享带分销的商城项目,网上收集了一波,希望能帮到大家. # 面向对象 该程序是企业在创立初期很好的技术基础框架,加快公司项目开发进度,当然也可以对现有的系统进行升 ...

  4. 微服务项目之电商--9.商城架构图及商城管理系统前端页面介绍及电商项目初步搭建(1)

    目录 一.商城架构图 前端: 二.商城管理系统前端页面 1.SPA介绍 2.webpack 四个核心概念 3.vue-cli 安装 4.项目测试 三.电商项目搭建 创建父模块管理 创建子模板注册中心l ...

  5. java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享

    项目简介: 专门针对微信服务号开发的一套微信商城,微信分销商城,支持商品多规格,支持按地区设置邮费,支持限时打折,订单返现,满减送,满包邮,支持订单打印,订单打印模板自定义,发货单打印,发货单打印模板 ...

  6. jeeplus多商户商城,分销商城

    #ZSCAT springcloud 多商户商城 下载 https://gitee.com/catshen/zscat_sw pc+h5 +小程序 +app uniapp集成 分销商城 积分商城 不用 ...

  7. 推荐一个微信小程序商城项目

    推荐一款实用的微信小程序商城项目,这个项目不仅有商城基本的功能,比如:商品管理.订单管理.用户管理,还有分销功能,具备广告.优惠券等功能. 技术选型 后端采用 Spring 技术栈,使用到的框架主要包 ...

  8. JAVA电商 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城

    JAVA电商 B2B2C商城系统 多用户商城系统 直播带货 新零售商城 o2o商城 电子商务 拼团商城 分销商城 1. 鸿鹄Cloud架构清单 2. Commonservice(通用服务) 通用服务: ...

  9. 一个完整的网上商城的源码_黄冈微信分销商城系统-源码码网

    5.资金管理,商城中产生的每一笔订单会员购物分销系统中都会有详细的记录,然后以数据报表的形式呈现在商家的眼前,通过报表,商城的营业情况一目了然.商家在系统后台可以随时查看商城的财务数据和顾客的消费情况 ...

最新文章

  1. 软件测试质量过程检测文档_如何编写实际上有效的质量检查文档
  2. Android-RelativeLayout布局技巧(一)
  3. c# AseConnection的类型初始值设定项引发异常 无法加载 DLL sybdrvado11.dll 解决办法...
  4. ListMapSet的操作和遍历 1
  5. 在一个类型的继承体系中,成员的构造顺序
  6. 算法学习之循环结构程序设计
  7. 凉凉!面试阿里我被Redis技术专题给搞的昏倒在地~
  8. 面试准备每日系列:计算机底层之并发编程(二)缓存行、一致性协议、伪共享、disruptor、CAS等待
  9. php的对象和数组应该学js,JavaScript数组与对象的常用方法及 json 的序列化
  10. 【2015 SACC】 架构之手机淘宝性能优化全记录
  11. Saltstack系列2:Saltstack远程执行命令
  12. Google SPDY介绍
  13. android之标准体重
  14. Android6.0风格图标,jQuery仿Android样式扁平风格图标插件
  15. JS与C语言的数据类型转换
  16. shell脚本——特殊符号
  17. Mysql免安装版下载以及配置
  18. 202203 word中的表格 实现 外框线粗 内部线细
  19. 三年初心不改,iQOO如何树立电竞旗舰新标杆?
  20. 树莓派实验室python人脸识别_使用树莓派进行简易人脸识别

热门文章

  1. NanoPi NEO3上手日记第三天——安装3G/4G网卡(OpenWrt系统均适用)
  2. 机器人擂台的利剑_童年回忆!机器人大擂台回来了!还记得当年的利箭吗?
  3. Android Studio 插件推荐
  4. java类成员和实例成员,面向对象Java实验:实验二 类封装,实例成员与类成员,包...
  5. zfs 文件服务器,Linux服务器ZFS文件系统使用攻略(图)
  6. csgo游戏中怎么显示现实中的时间
  7. 嘟嘟投资升级笔记 -- 懂得这几招,投资菜鸟变老鸟
  8. GRS认证现场稽核之范围与目的
  9. android for yoga2,联想发布 12.2 寸 Yoga A12 Android 变形本
  10. Matlab深度学习笔记——深度学习工具箱说明