项目初始化
使用打包好的项目:npm run start
disc中下载npm i -g live-server 然后启动
时间格式化插件dayjs
element-ui 按需引入
1下载插件2配置.babelrc
Vue.use(Button)注意插件大写
项目结构
封装axios
路由拦截
组件封装
navbar
views存放视图组件
components存放公共组件
api存放统一封装的接口
router是路由
store是状态管理器
首页
顶部栏-logo和搜索
轮播是使用一个子组件,方便复用,封装轮播接口
分类:使用了vant组件来完成的,请求数据进行渲染
产品列表
优化部分
问题:监听滚动事件会频繁触发很多次,导致请求很多次重复
解决:使用节流来优化
节流的原理是xxxx
Subtopic 1
目的:开发功能的时候需要考虑性能的消耗,以及闭包的合理使用
封装产品列表接口通过vant组件来实现
首页里轮播、分类、产品列表是三个接口,我使用promise.all来一次请求三个接口
使用原生js开发的下拉加载更多
实现的原理:当前的视图高度+滚动条卷上去的高度=>滚动条(整个文档)的高度就说明到底了。
详情页
返回导航栏:是全局封装的
轮播
也是封装的
根据地址栏的产品id来加载详情页数据
底部是客服,购物车,商铺,加入购物车和立即购买
因为进入客服或购物车以及加入购物车都需要用户登录,所以我全局使用自定义指令来控制行为
客服
使用socket.io实现的客服功能
购物车
商品点击加入购物车时,如果没有登录会跳转到登录页面先进行登录,如果已经登录,点击加入购物车会将商品直接加入到购物车里面,重复点击同样的商品时,购物车里面的商品会依次加1。商品价格是通过computed计算属性和全选单选勾选状态来计算价格的,等等!
订单管理
vant组件来完成的,封装请求订单管理接口。未付款的商品付款了,商品会添加到已付款,未付款,页面里面等等。
用户系统
01.将账号密码通过数据传参与台login接口匹配验证通过
02.将得到的token值存储到vue中并作持久化,根据是否存有token值,判断是否有访问的权限
03.用路由守卫判断用户浏览该页面是否需要登录权限,没登录则跳转至登录页面
搜索
封装列表数据的接口,通过filte过滤来实现