npm install
npm run serve
npm run build
npm run test
npm run lint
####首页头部FeatureView
- 独立组件封装FeatureView
- div>a>img
####切换的TabControl
- pro>title
- div>根据title v-for 遍历 div>spen{{title}}
- css样式
- 选中哪一个tab,哪一个tab文字颜色改变,下面broder-bottom
- index选中相关数据的角标
####首页商品数据请求
- 设计数据结构:
- goods:{ pop:page/list new:pege/list sell:page/list }
- 发送数据请求:
- 在network文件中的home.js封装getHomeGoods
- 在Home.vue中,又在methods中getHomeGoods(type)
- 调用this.getGoodsHomedata('pop')/this.getGoodsHomedata('new');/this.getGoodsHomedata('sell');
- pege:动态的获取对应page
- 获取到数据:res
- this.goods[type].list.push(...res.data.list)
- this.goods[type].page = res.data.page;
- goods:{ pop:page/list[30] new:pege/list[30] sell:page/list[30] }
####对商品数据进行展示
-
封装GoodsList.vue组件
- props:goodslist-->list[30]
- 通过TabControl组件里面的点击事件btnClick
- 返回一个方法给父组件Home.vue:this.$emit('tabClick', index);
- 在组件TabControl里定义:@tabClick="backtabClick"
- 在Home.vue里面定义一个data里面currentType属性
- 在Home.vue里面的methods里面的实现backtabClick(index),修改currentType
- 在Home.vue里面的计算属性computed的showGoodsData()
- return this.goods[this.currentType].list将数据传入GoodsList.vue组件
- 通过v-for -->GoodsListItem[30]
- GoodsListItem(组件)-->goodItem(数据)
- props:goodslist-->list[30]
-
封装GoodsListItem.vue组件
- props:goodItem
- goodItem:取出img/orgPrice/cfav/title,使用标签进行展示
####对滚东进行重构:Better-Scroll
- Better-Scroll的基本使用
- const bscroll=new BScroll(el,{ })
- 注意:wapper-->content-->很多内容
- 监听滚动
- probeType:0/1/2(手指滚动)/3(只要是滚动)
- bscroll.on('scroll', (position) => {})
- 上拉加载
- pullUpLoad:false/ture
- bscroll.on('pullingUp', () => {});
- click:false
- button可以监听
- div不可以
- 在Vue项目的使用Better-Scroll
- 对Better-Scroll封装为Scroll.vue
- Home.vue和Scroll.vue之间进行通讯
- Home.vue将probeType设置为3
- Scroll.vue需要通过$emit实时的将事件发送到Home.vue
####回到顶部BackTop
- 对BackTop.vue组件的封装
- 如何监听组件的点击事件
- 直接监听back-top的点击,但是可以直接监听?
- 不可以,必须添加.native修饰符
- 回到顶部:
- scroll对象,scroll.scrollTo(x, y, time);
- this.$refs.aaa.scrollTo(0, 0, 300);
- BackTop显示和隐藏
- isactive:false
- 监听滚动位置:
- position.y < -2000 -->isactive:ture
- position.y > -2000 -->isactive:false
- 直接监听back-top的点击,但是可以直接监听?
####解决首页中的Better-Scroll可滚动区域的问题
- Better-Scroll在决定有多少区域可以滚动时,是根据scrollerHeight属性决定
- scrollerHeight属性是根据放Better-Scroll的content在子组件的高度
- 但是我们的首页中,刚开始在计算scrollerHeight属性时,是没有将图片计算在内的
- 所以计算出来的高度是错误的
- 后来图片加载完成,导相关的高度变化,但是scrollerHeight属性没有进行更新
- 所以滚动出现了相关问题
- 如何解决这个问题
- 监听每一张图片是否加载完成,只要有一张图片加载完成了,就执行this.scroll.refresh();
- 如何监听图片加载完成?
- 原生元素的js监听图片:img.onload=function(){}
- Vue中监听的refresh()
- 如何将GoodsListItme.vue中的事件传入到Home.vue中
- 一种采用this.$parent.$parent.refresh()
- 直接采用事件总线
- bus-->总线
- Vue.prototype.$bus=new Vue();
- this.$bus.$emit('事件名称',参数)
- this.$bus.$on('事件名称',回调函数(参数))
- 对于refresh非常频繁的问题,进行防抖操作
- 防抖debounce/节流throttle