vue项目实战--美食杰之首页

       读者,大家好,此篇分享一个笔者写过的vue项目,名叫美食杰,是一个PC端项目,分享出来的目的是为了可以让大家共同学习进步,也期望各位读者能指出笔者的不足之处,感谢!!

       正片开始。。。

        1.首页的展示和介绍

              头部板块,因为此头部板块在整个项目中多地使用,所以我将其放在公共组件部分,名为header.vue

              导航板块,就是黄线框框部分,在此板块中拥有两个切换的模板,今天只说首页板块

           轮播图板块,使用elemnt-ui实现的轮播图效果

       内容精选,首页展示模块,使用了element-ui实现的布局

      

          好啦,首页的展示完毕

2.布局和功能的实现

 (1)头部,使用element-ui来实现布局,主要是使用栅格布局,左边图片模板,右边登录模板

{{userInfo.name}}发布菜谱退出登录注册

 (2)导航模板,使用element-ui的导航菜单组件来实现

(3)轮播图模板,使用element-ui的走马灯组件中的卡片化组件来完成,图片数据是从接口中请求得到,放入vue实例data中,渲染到组件上

(4)内容精选模板,使用element-ui的栅格布局中的分栏间隔组件来完成布局,数据从后端接口中请求并渲染

       内容模板有一个具体的功能需要实现,就是节流,因为我们的数据中的数据过于庞大,一次全部渲染的话非常耗费性能,导致用户体验差

     具体实现:

1.首次加载一部分,我们这里是五个数据

          在请求数据时携带参数指定展示的页数,常理来说默认值是1,请求到数据渲染到页面

 data(){return {banners:[],menuList:[],//当前页数page:1,//总页数pages:null}},
getMenus({page:this.page}).then(data=>{this.page = data.data.current_pagethis.menuList = data.data.listthis.pages = Math.ceil(Number(data.data.total) / Number(data.data.page_size))})

2.当鼠标滚轮滚动到指定位置时,加载下次数据

       给浏览器添加滚轮事件

 mounted(){this.scrollHanle = throttle(500,this.scroll.bind(this))window.addEventListener('scroll',this.scrollHanle)},

    判定滚轮位置,达到设定值,使用v-if或v-show触发加载动画,并再次请求数据,获取下次数据,我这里使用了父子组件,所以要修改值,需要用到$emit 

   scroll(){if(this.isloading) returnif(this.$refs.waterfall.getBoundingClientRect().bottom
 loadinghandle(){this.page++if(this.page <= this.pages){this.$refs.waterfall.isloading = truegetMenus({page:this.page}).then(data=>{this.menuList.push(...data.data.list)this.$refs.waterfall.isloading = false})}else{this.$refs.waterfall.isloading = false           }}

3.使用节流防止滚动事件重复触发

 mounted(){this.scrollHanle = throttle(500,this.scroll.bind(this))window.addEventListener('scroll',this.scrollHanle)},

 写完之后的效果图:

 至此,首页完结。

        总体来说,首页还算是比较简单的,没什么别的困难,主要就是滚轮逻辑处理问题,笔者在写的过程中,在节流上面就遇到了阻碍,因为节流这一块平时用的不是很多,所以不会很熟练,其间也出了一些小错,总之就是耽误了许久。最大的问题是this指向问题,所以干脆直接用bind将this绑定死,一劳永逸。

        好了,首页到此结束,最后,笔者奉上:“学无止境”。再见!!!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部