网易严选商城小程序全栈开发,域名备案中近期上线(mpvue+koa2+mysql)

25,016 阅读6分钟

2018 年 9 月 13 日 : 新增了VUEX的引入,在store文件夹里 并且在首页的城市获取,和自己选择城市的页面中使用了VUEX,大家可以参考mpvue中如何引入和使用vuex的

2018年9月6日 : 在首页顶部新增搜索以及引入高德地图api

1.用户同意获取授权和用户不同意获取授权两种情况




2018年9月5日 : 在商品详情页面添加了商品分享(转发功能);


2018年8月30日 : 好多人反映登录无法登录,因为这个需要自己配置后台才可以,为了可以让大家体验登录后的一些操作,在这里我添加了默认用户,大家可以体验其他功能! 这里可能会遇到问题:大家都是使用的这一个账号,添加购物车,收藏还有一些收货地址之类的可能会显示很多人添加的,我会定期删除线上默认用户的这些信息, 现在clone最新的代码可以体验.

 大家也可以在App.vue设置自己的默认账户信息(这样就不会和其他人冲突了)
  var userInfo = {"openId":"oQmbb4sNZdxaUQZ0sfYgvtOP2S7c","nickName":"何玉硕","gender":1,"language":"zh_CN","city":"Changping","province":"Beijing","country":"China","avatarUrl":"https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIbWFEIJj8IpGeHM7dGic1aTFZALjWcMm9ltWfFiaQfVRYticWBfgGfzXWMt2EkJWiaicPtftHAlWxUibxQ/132","watermark":{"timestamp":1535513485,"appid":"wx601ce71bde7b9add"}};
  var openId = userInfo.openId;
  wx.setStorageSync("userInfo", userInfo);
  wx.setStorageSync("openId", openId);

前言

一直打算自己写接口,写一个上线的小程序,数据方面总是无从下手,无意中发现一个网友爬取的网易严选商城的一些数据大概一共有20张左右的表,算是相当详细了(对其中部分表的字段和部分数据进行了修改,)平时写项目大部分用的vue,所以直接选择了mpvue开发,后端一开始打算用php但是学了半个月感觉需要学的东西太多,短时间里写不出这个线上小程序,最后决定用node来开发提供接口。

小程序源码地址

小程序服务端源码地址 

喜欢的希望大家点个star鼓励一下,谢谢大家的支持!!!!

技术站

前端:小程序、mpvue、async、await

后端:Node、koa2、mysql、knex.js操作数据库,可视化工具使用的Navicat

目前上线状态

由于域名备案小程序暂时无法上线,但是小程序的服务端已经上线,接口都是访问的线上接口,你只需要把源码克隆到本地,直接在微信开发者工具中,就能请求到数据,看到效果 ,备案通过后会把二维码添加进来

小程序源码地址

小程序服务端源码地址 

喜欢的希望大家点个start鼓励一下,谢谢大家的支持!!!!

商城主要实现的功能

  • 首页、专题、分类、购物车、我的
  • 小程序授权登陆获取用户信息
  • 首页包含品牌制造页、品牌制造详情页面、新品首发页面、人气推荐页面、各分类列表
  • 商品详情页面,包含常见问题、大家都在看商品列表、加入购物车、收藏商品、立即购买、下订单、选择收货地址
  • 搜索功能,包含历史记录、热门搜索、搜索后列表展示、模糊搜索提示
  • 商品列表部分包含综合、价格高低进行排序
  • 专题功能,包含专题详情、专题推荐列表
  • 分类,包含左边大分类和右边详细分类
  • 购物车,包含商品单选全选、左滑删除商品、下订单等功能
  • 地址管理,包含新建地址和导入微信地址,地址编辑、左滑删除、设置默认地址
  • 我的页,包含我的收藏、地址管理、意见反馈

部分效果展示

1.首页展示和专题页效果


2、分类页面,分类子页面以及搜索功能、搜索列表、历史记录、模糊搜索提示



3、购物车功能添加购物车,单选多选,删除和商品收藏功能


4、地址管理


项目总结和遇到的一些问题

1.新增页面

只要新增了页面,必须手动执行 npm run dev 才能生效

2.created生命周期需要注意的问题

不要在vue的created生命周期里获取数据,只要小程序开启,整个项目的所有页面里created生命周期里的方法都会执行一遍,所以不要使用这个生命周期,一般可以写在mounted生命周期里,或者原生的onLoad生命周期里

3.共用页面或者有输入数据的页面需要注意的问题(例如:详情页,新增地址,搜索页)

在这些页面都有一个共同问题,就是他会保留上次你所有的操作,例如:详情页面虽然会获取新的数据,但是他会先闪一下以前的数据然后在变成新的数据,例如:搜索页面,当你退出后,再次进入的时候上次搜索输入的内容还保存在里边,我们需要做的就是在页面刚加载的时候,需要吧vue中data里定义的初始数据都要重新初始化一遍

//加载页面之前先初始化这些数据,这样可以解决上边带来的问题
 onLoad() {
  this.initData(); 
},
//定义一个方法 需要初始化的数据   
initData() {
   this.listData = []
   this.productList = []
}

3.onShow方法的使用

正常mounted生命周期里获取数据执行一次,当你再次进入的时候不会重新请求数据,如果你需要重新请求数据,可以把获取数据的方法写在onShow生命周期里边,只要展示这个页面就会执行里边的方法

onShow() {  
this.getListData();
},

4.mpvue-loader版本的控制(锁定版本,以免官方升级导致出现问题)

锁定版本,原本项目开发的很好,换了太电脑同样项目重新下载依赖结果各种报错,在github中issue中发现,mpvue-loader进行了升级,不支持以前main.js里写配置小程序的app.json,锁定版本只需要如下两个地方,不锁定版本,默认会下载最新版本的

//把前面的^这个符号去掉即可锁定版本
"mpvue-loader": "1.0.13","webpack-mpvue-asset-plugin": "0.0.2" 

5.scroll-view原生组件设置横向滚动

<scroll-view scroll-x="true" :scroll-left="scrollLeft" class="head">
   <div @click="changeTab(index,item.id)" :class="[nowIndex==index ?'active':'']" v-for="(item, index) in navData" :key="index">        
        {{item.name}}      
    </div>
</scroll-view>
//对子元素设置浮动都没用,父元素使用flex布局也是不行的
//需要如下设置
//父元素
.head{
  white-space: nowrap;
}
//子元素如下设置,这样设置后就可以横向滚动了
.item{
  display: inline-block;
}

6.使用mpvue-wxParse富文本编辑器插件

如果需要使用这个插件,那你必须使用我这个package.json还有相应的配置文件,我对mpvue-loader等配置版本锁定,在开发中我遇到了这个坑,默认安装最新版本,导致解析mpvue-wxparse插件出现错误效果不出来.

最后

后续还会陆续添加新的功能

小程序源码地址

小程序服务端源码地址

喜欢的希望大家点个star鼓励一下,谢谢大家的支持!!!!