文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

爱奇艺视频小程序系统功能如何开发

2023-06-26 08:33

关注

本文小编为大家详细介绍“爱奇艺视频小程序系统功能如何开发”,内容详细,步骤清晰,细节处理妥当,希望这篇“爱奇艺视频小程序系统功能如何开发”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1.首页的轮播图

这里使用的是小程序的滑块视图容器swiper组件,用来做轮播图那叫一个简单方便

使用过爱奇艺小程序的朋友会发现首页简单介绍视频信息的轮播图是布局在页面中间并且每一张图片都不相连的,滑动时很是简洁大方。一开始我是简单的使用,将swiper设置了宽高并使之居中,就产生了下面的结果:只有中间的内容在滑动,并不是想要的效果

那看来即使swiper组件看起来简单也要好好研究一番哪,看了文档之后我发现swiper组件其实是swiper-item在滑动,并且它仅可放置在swiper组件中,宽高自动设置为100%。既然这样,那就去设置swiper-item的宽度好了

swiper{    width:100%;}swiper-item{    width:80%;}

emmm好像不太行,似乎每一个swiper-item总是那么分不开啊,那就去设置里面的内容的样式吧

.info-box{    width: 100%;    margin: 0 60rpx;}

总算这样才做到了想要的效果。撒花~

2.宣传图跟着轮播图改变

在这里是使用了swiperbindchange方法。只要滑动了就会触发,并且有一个current代表当时滑动到第几个。这样想来,swiper好像一个数组,里面包含着很多的swiper-item

所以我们可以在js部分通过获取到这个current值,在对应的图片资源数组中遍历并取出地址,换成宣传图的地址即可

//index.js        moviepicChange(e) {        const imgsUrlList = this.data.imgsUrlList; //图片资源        let bigImg = this.data.bigImg;        let video_id = this.data.video_id;        for (let i = 0; i < imgsUrlList.length; i++) {            if (i == e.detail.current) { //如果current值与图片数组索引值匹配到了,则                bigImg = imgsUrlList[i].thumbnail; //换掉宣传图片地址                video_id = imgsUrlList[i].video_id;            }        }        this.setData({            bigImg: bigImg,            video_id        })    }

3.任意点击视频缩略图即可跳转到相关页面

在这个功能里头,数据处理是我碰到的一大难题了,因为没有后端,我就想试图模拟一下点击一个图片就发送视频id,并由后端返回响应数据的操作,大致思路就是就是通过了一个“中间站”去处理。emmm 可能有一点笨笨的= =。

  1. 首先准备好来自Easy-Mock的数据接口

  2. 然后在视频缩略图上绑定一下事件,用data-传递想要用于查询的参数

     <swiper-item data-vid="{{item.video_id}}" data-title="{{item.title}}" bindtap="openDetail"></swiper-item>
  3. 视频详情页面获取到传过来的id之后就可以发起请求,因为wx.request是个异步操作,需要一点时间,此处我对wx.request进行了封装,返回一个promise的办法就可以把异步操作变成了同步的啦ヾ(◍&deg;&nabla;&deg;◍)ノ゙

     //video-detail.js requestVideo: function(num = 0) { util.request({ //封装的util.request方法         url: `https://www.easy-mock.com/mock/5b0c37bed0e51c310ce24ab0/iqiyi/media#!method=get`,  //请求地址         data: { // 请求参数             id: this.data.video_id,             tag: 'dramas',             langs: 'en'         }     })     .then(res => { //res是返回的数据         //对数据进行处理,之后便可通过数据绑定在页面显示响应内容     }) }

创建一个util工具文件夹,用于提供工具方法。这里就是我模拟后端传回响应数据的地方,先在util.js内获取所有的数据,再根据视频详情页面发送过来的参数对已经获得的数据进行处理,通过返回promise.then的操作在视频详情页面获得由util.js处理之后的数据。

//util.js    let util = {request(opt) {    let options = Object.assign({},opt); //花括号是目标对象,后面的opt是源对象。进行对象合并:将源对象里面的属性添加到目标对象中去,若两者的属性名有冲突,后面的将会覆盖前面的    let { url, data} = options; //结构成这两个变量    return new Promise((resolve, reject) => { //向请求发起页面返回一个promise        wx.request({ //发送请求            url,            data,            success(res) { //请求到数据之后对数据进行处理                let returnRes = [];                if (data.hasOwnProperty('tag')) {                     let arr = res.data[data.tag];                    if (data.hasOwnProperty('id')) { //如果请求参数中有tag,id则进行以下匹配                        console.log(arr)                        for (let i in arr) {                            if (arr[i].video_id === data.id) {                                 returnRes = arr[i]; //得到跟点击的缩略图相对应的视频资源                            }                        }                        resolve(returnRes)                        return;                    }                    returnRes = arr;                }                resolve(returnRes)            },            fail(err) {                reject(err)            }        })    })}}

4.关键字搜索

  1. 首先是在搜索页面获取到关键字,之后作为请求参数使用上述封装好util.request进行请求与数据处理

  2. 在util.js内获取到所有数据之后,在众多数据中通过RegExpObject.test(string)实现关键字的遍历匹配

     //util.js if (data.hasOwnProperty('key')) { //如果请求参数是key const media = res.data; for (let i in media) { //遍历匹配电影名     for (let j in media[i]) {         var re = new RegExp(data.key);         if (re.test(media[i][j].title)) {             returnRes.push(media[i][j]); //得到匹配好的电影         }     } } resolve(returnRes) return; } resolve(returnRes)
  3. 搜索页面使用util.request得到数据之后,搜索结果列表一项一项就可以显示出来。重点是(敲黑板),一般来说点击哪一项,在搜索结果页面那一项就会排在最上面,那我就想要不然再建一个由点击的的那一项作为第一项的查询结果数组,将它存在本地然后在下一个页面取出并显示!

     //search.js clickResult: function(e) { let index = e.currentTarget.dataset.num; //点击了第几项 let searchVal = this.data.searchVal; //关键词 let StorageResult = []; // 用于存在本地的数组 let temp = []; const result = this.data.result; for (let i = 0; i < result.length; i++) {     if (i == index) {         temp = result.splice(i, 1); //取出点击的那一项     } } StorageResult = temp; for (let i in result) {     StorageResult = [...StorageResult, result[i]] //将点击的那一项作为数组首位,其他搜索结果再依次放入 } wx.setStorage({ //在本地缓存搜索结果     key: 'searchResult',     data: StorageResult,     success: function(res) {         wx.navigateTo({             url: `search-result/search-result?key=${searchVal}` //跳转到下一个页面         })     } }) }
  4. 另外,搜索结果会顺带把集数罗列出来,那就需要实现点哪集就在视频详情页定位到哪集的功能

读到这里,这篇“爱奇艺视频小程序系统功能如何开发”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯