Vue重构有赞商城

一、记录我踩到的坑

(1)、未绑定数据:(踩坑次数:2)

Vue重构有赞商城_第1张图片

(2)、如何实现页面的跳转

例如:我点击水果

Vue重构有赞商城_第2张图片

Vue重构有赞商城_第3张图片
  1. 首先绑定



    2.声明函数,传参数


    Vue重构有赞商城_第4张图片

    3.对象的解构赋值
    Vue重构有赞商城_第5张图片

二、课程的重点部分

第二课

(1)、左侧导航栏切换

Vue重构有赞商城_第6张图片
  • 采用到classstyle的绑定问题
  • 点击进行切换,就是绑定事件@click=""绑定原生事件,做一个识别和请求,对后台的数据做请求,做请求就是传id,请求二级分类。把一级分类id传到二级分类,根据id进行相应的请求。(点击一级获取二级)

    相对应的需要在JS中把方法getSublist()定义出来
    Vue重构有赞商城_第7张图片

    我们在浏览器中看下id是否传过来了
    Vue重构有赞商城_第8张图片

    我们可以看到点击4个选择分别传的id为:800、810、817、811

把数组的下标传进来,进行切换用v-show="topIndex ===0"

Vue重构有赞商城_第9张图片

Vue重构有赞商城_第10张图片
Vue重构有赞商城_第11张图片

Vue重构有赞商城_第12张图片
实现切换功能.gif

(2)、左侧导航栏焦点状态的处理,其实就是一个类加载的问题

Vue重构有赞商城_第13张图片

我们在这就已经写死了状态为active,我们需要把这里删除,重新绑定


Vue重构有赞商城_第14张图片

Vue重构有赞商城_第15张图片

(3)、商品价格的处理,用过滤器

Vue重构有赞商城_第16张图片

html代码:

        
¥{{list.price | numFilter}}

js代码:

    filters:{
        numFilter(price){
            return price.toFixed(2)
        }
    }
Vue重构有赞商城_第17张图片

注意:必须是Number类型数据才能使用toFixed() 方法,但是vue中获取的数据通常为String格式,所以这里用Number处理一下数据。


第三课

(1)、现在处于分类页面,下面图标激活状态不对应

Vue重构有赞商城_第18张图片

(2)、拓展知识

(2.1)单Vue文件


Vue重构有赞商城_第19张图片
  • 对于单Vue文件,关于data的配置必须是一个方法,在方法内部返回一个对象
  • 你一个单Vue文件可能会在页面上,可能在多处使用同一个单Vue文件,这种情况下,那么多个地方的单Vue文件会共享同一处数据,为了保证每一个组件的数据源的唯一性,就这么处理

(2.2)引入qs模块


加载进来

接下去的内容看开头页面如何跳转


(3)、如何实现toTOP的小功能,当滑动页面一定距离出现,点击回滚到顶部

Vue重构有赞商城_第20张图片
  • 绑定最外面的容器标签,绑定的时间是@touchmove="move"
    Vue重构有赞商城_第21张图片
  • 声明函数作用
    Vue重构有赞商城_第22张图片

    这里不要写document.body.scrollTop
  • 绑定内容,用v-show,添加事件@click="toTop"
  • 回滚动画加载加载插件
yarn add velocity-animate
  • 页面引入
import Velocity from 'velocity-animate'
  • 如何使用


第四课 goods组件的引入

一、基本内容配置

  1. 新建好html,CSS文件,在JS文件中引入CSS


    Vue重构有赞商城_第23张图片

2.引进基本模版


Vue重构有赞商城_第24张图片
  1. 增加挂载点
Vue重构有赞商城_第25张图片

二、增加goods组件

处理入口问题,商品详情页从哪里过来的?

  1. 在主页面index.html,分类页面category.html,搜索页面search.html修改入口


    Vue重构有赞商城_第26张图片

    Vue重构有赞商城_第27张图片

    Vue重构有赞商城_第28张图片
  • 绑定href记得用绑定:
  • 讲首页的对应的id传进来,后面才能进行相对应的数据处理"'XXX.html?id=' + list.id",这里是首页商品的id,也就是你点击商品对应的id,这个要传到商品详情的数据库

2.获取数据

  • 拿到数据接口,第一步先去api.js写api


    Vue重构有赞商城_第29张图片
  • 到goods.js创建实例


    Vue重构有赞商城_第30张图片
  • 需要注意都是这里取到的{id}不符合我们要的类型,如?id=077,前面多了个?,所以引用第三方插件qs

  • 使用对象的解构赋值

let {id} = qs.parse(location.search.substr(1))
  1. 拿到数据后,到相应的页面进行数据渲染
  • 一开始details是个null值,做渲染时候,相应的值还没拿回来,这时候去读相应的属性值,可能会报错,我们可以做出一个条件限制v-if="details"
Vue重构有赞商城_第31张图片
  1. 数据渲染


    Vue重构有赞商城_第32张图片
  • 数据是一个数组,用v-for渲染出来



    Vue重构有赞商城_第33张图片
  1. 具体的商品详情是html片段,想在某一个容器里面渲染html片段时候,用v-html
  2. 商品详情与本店成交的切换


  • 做tab的切换,就必须意识到有焦点状态,有焦点状态,我们都是采用下标做处理
  • 通过数据的形式进行配值,我要把这个渲染到页面上,必须在相应的data里面初始化
    Vue重构有赞商城_第34张图片
  • 绑定类名:class="{active:index === tabIndex}",绑定事件@click="change(index)"


  • 声明函数,并记得初始化tabIndex:0


    Vue重构有赞商城_第35张图片
  • 页面的显示用v-show来控制


    Vue重构有赞商城_第36张图片
  1. 成交数据渲染
  • 根据数据接口写api


    Vue重构有赞商城_第37张图片
  • 声明函数,不是主动在生命周期里面获取,是通过tab栏的切换去触发的,如果你永远不去看这个成交历史我就永远不给你触发,所以这个渲染是通过changeTab触发的


    Vue重构有赞商城_第38张图片
  • 页面渲染


    Vue重构有赞商城_第39张图片
  1. 刷新时候有源码显示,用[v-cloak]{display:none},不能通过JS进行加载
    Vue重构有赞商城_第40张图片
Vue重构有赞商城_第41张图片

  1. 商品轮播的处理

轮播的数据不一致

  • 引入swipe,这个已经封装好的Swipe.vue组件,


    Vue重构有赞商城_第42张图片
  • Swipe.vue组件,其中a标签是点击跳转图片信息,在商品详情页不需要,后续对数据需要进行处理,

    Vue重构有赞商城_第43张图片

  • 对图片数据进行处理,声明一个bannerLists为null,在定一个空数组,用forEach函数对后台数据进行处理,并把处理好的数据push到刚定义的this.bannerLists。


    Vue重构有赞商城_第44张图片

    Vue重构有赞商城_第45张图片

  • 不管是PC端还是移动端,凡是有图片的地方,都要给定固定的宽高,例如Swipe组件中


    Vue重构有赞商城_第46张图片
  • 不管你给图片固定宽高还是给图片的容器固定宽高,让图片去继承,主要是为了防抖

  • 因为图片还没加载进来的时候,若没有固定宽高,就会有个从无到有的过程,可给组件的外容器固定高度即可


  1. 加入购物车及立即购买的弹窗
  • 设计规范


    Vue重构有赞商城_第47张图片
  • 定义状态初始值skuType:1

  • 相应的绑定事件@click="chooseSku()"


    Vue重构有赞商城_第48张图片

    Vue重构有赞商城_第49张图片
  • 声明函数,每次调用函数时候,首先要把值赋给this.skuType = type


    Vue重构有赞商城_第50张图片
  • 状态判断


    Vue重构有赞商城_第51张图片
  • 弹出阴影层,先给个初始值showSku:false

  • 添加v-show=“showSku”

    Vue重构有赞商城_第52张图片

出现弹窗滑动问题

Vue重构有赞商城_第53张图片
  • 解决办法:监听showSku
Vue重构有赞商城_第54张图片

点击红色框,遮罩层关闭

Vue重构有赞商城_第55张图片
  • 遮罩层


    Vue重构有赞商城_第56张图片
  • 取消按钮


    image.png

优化地方:动画过渡太生硬

  • 把弹窗包裹起来,再写CSS
    Vue重构有赞商城_第57张图片
    image.png
Vue重构有赞商城_第58张图片
  • 购买数量的制作,定义skuNum:1初始值,在页面上进行值的绑定
Vue重构有赞商城_第59张图片
  • 黄框代表当值为1时候,减1按钮不显示
  • 红框代表点击相应的按钮进行加减
  • 声明函数,并对当值等于1时候,这时候点击减一,不执行函数


    Vue重构有赞商城_第60张图片

  1. 加入购物车的相关代码
  • 两处需要绑定事件@click="addCart"


    Vue重构有赞商城_第61张图片
  • 声明函数,进行post异步请求,必须传商品的id和商品的数量,并且弹出已经加入购物车的信息

    Vue重构有赞商城_第62张图片

  • 另外对悬浮按钮进行设置


    Vue重构有赞商城_第63张图片
  • 显示已经加入购物车的信息一点击加入购物车就变true,然后设置定时器0.8s后,值变为false,关闭提示信息

    Vue重构有赞商城_第64张图片

Vue重构有赞商城_第65张图片

你可能感兴趣的:(Vue重构有赞商城)