Vue仿今日头条--手机端视频栏目和小视频栏目等

2024-11-20 19:30:23

  本文主要分析系列《Vue仿今日头条》中手机端的“视频”栏目、“小视频”栏目(列表和详情页)和“我的”栏目的所有相关页面,效果图如下图:

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

工具/原料

Sublime Text

Chrome浏览器调试

视频页面

1、  template和style代码如下图(1-6),最终显示效果如下图(7):  1.template有一个比较特殊地方,就是使用“canvas代替video播放”,因为video在ios会显示空白;  2.template的“NoneData”(组件)用于显示加载全部数据的提示信息,“NoneData2”(组件)用于显示没有数据的提示信息。

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

2、  script代码如下图(分析重点代码):  1.加载页面时“created”,先清空“视频”栏蚕蝣鲢蹙目数据,不然会导致多显示原先的旧数据;  2.方法“loadingMore”用于往上拖动加载更多数据,原理是利用每次往上拖动时,获取数据的页数加1(this.pageindex++),然后把获取到的数据合并原先的数据,再渲染到页面上;  3.方法“play”用于点击播放视频,该方法有两点比较重点地方:    1)“if (lastItem)”用于暂停播放的视频,避免多个视频同时播放;    2)调用方法“dragVideo”利用canvas来绘制视频的每一帧图像,从而实现类似播放的效果。

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

小视频栏目

1、  列表页面template和style代码如下图(1-3),最终显示效果如下图(4):

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

2、  列表页面script代码如下图(分析重点代码):  1.加载页面时“created”,先清空“小视频”栏目数据(this.$store.state.video.list = []),不然会导致多显示原先的旧数据;  2.方法“loadingMore”用于往上拖动加载更多数据,原理是利用每次往上拖动时,获取数据的页数加1(this.pageindex++),然后把获取到的数据合并原先的数据,再渲染到页面上;  3.方法“goVideoDetails”用于跳转到详情页,并更新播放次数。

Vue仿今日头条--手机端视频栏目和小视频栏目等

3、  详情页template和style代码如下图(1-7),这一块代码量比较大,主要分析一下template的重点代码,样式这一块都比较简单,这里不作过多分析:  1.template的“head”这一块显示头部内容,左边箭头图标点击返回首页,右边更多图标点击弹出其它功能页面;  2.template的“#video”显示视频内容,铺满整个屏幕,且自动播放;  3.template的“userInfo”这一块显示作者头像(固定)和作者,点击“关注”按钮可以切换不同状态(未关联接口)  4.template的“comment”显示input输入框(用于评论);  5.template的“buttons”这一块显示跟拍图标(未实现)、点赞图标、评论图标和分享图标(弹出分享页面);  6.template的“el-drawer”显示弹出框的布局,可自行查看element-ui。

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

4、  详情页script代码如下图(分析重点代码):  1.加载页面时“created”,代码“Lo艘早祓胂cal.set('detailsID', this.$route.params.id)”为了解决刷新时候,报id没有的问题;  2.方法“getPercentage”用来计算视频播放进度,底部输入框上面的线会根据播放进度显示对应长度的红色;  3.方法“toggleLike”先判断是否登录,未登录会跳到登录页面;如果未点赞状态,点击“if (this.islike)”则变为点赞状态、数量加1并保存数据到数据库,反之则变为未点击点赞状态、数量减1并删掉点赞的数据;  4.方法“submitComment”先判断是否登录,未登录会跳到登录页面;登录状态下则把评论数据和用户相关信息保存到数据库。

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

我的 栏目

1、  “我的”template和style代码如下图(1-7),这一块都比较简单,这里不作过多分析,最终显示效果如下图(8(未登录)):

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

2、  “我的”script代码如下图(分析重点代码):  1.加载页面时“created”,获取用户名(Cookie.get('username'))和头像(Cookie.get('useravatar')),用来判断如果已经登陆过,就直接显示用户信息,不需要再次登录;  2.方法“login”点击跳转到登录页面;  3.方法“logout”用于退出登录(在页面底部,效果图未截到),主要是清除cookie并刷新当前页面。  Tips:该页面除了实现登录和退出功能之外,其它都未实现功能,可参考其它页面的方法实现其功能。

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

3、  登录页面template和style代码如下图(1-4),这一块都比较简单,这里不作过多分析,最终显示效果如下图(5(未输入)):

Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等Vue仿今日头条--手机端视频栏目和小视频栏目等

4、  登录页面script代码如下图(分析重点代码):  1.方法“changeNumber”:    1)由于“type为number时,maxlength不起作用”,所以需要使用“inputVaule.slice(0, 11)”来截取长度;    2)校验输入数字,满足正则表达式(if (pattern.test(this.inputValue)))则高亮按钮,才可以点击下一步;  2.方法“goAccount”用于点击跳转到“我的”页面,未实现手机号码跟数据库关联,只是使用Cookie.set进行缓存。

Vue仿今日头条--手机端视频栏目和小视频栏目等
猜你喜欢