失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据

Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据

时间:2022-05-10 04:44:13

相关推荐

Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据

前文

前面已经实现了音乐导航菜单的切换,现在要实现主页面的今日推荐功能。

效果

实现

实现首页重定向

当应用初始化时,默认进入主页面home页,所以在router下的index.js下配置:

export default new Router({routes: [{path: '/',name: 'Index',redirect:"/home",component: Index,children:[

实现在主页面引入今日推荐组件

首先在components下新建组件Today_recommend.vue组件

<template lang="html"><div class="">今日推荐</div></template><script>export default {}</script><style lang="css"></style>

然后想在home.vue这个页面中引入组件Today_recommend.vue,打开home.vue

<template lang="html"><div class=""><TodayRecommend/></div></template><script>import TodayRecommend from "../components/Today_Recommend"export default {name:"home",components:{TodayRecommend}}</script><style lang="css"></style>

效果

接下来就是完善今日推荐页面

完善今日推荐页面

完善样式

加入scoped范围限制

<style scoped>.mod-albums {background-color: #fff;padding: 10px 17px;}.hd {display: flex;margin: 14px 0 18px 0;}.hd h2 {-webkit-box-flex: 1;-webkit-flex: 1;flex: 1;margin: 0;padding: 0;font-size: 20px;}.hd div {width: 64px;font-size: 12px;text-align: right;}.mod-albums .gallery {overflow: hidden;margin: 0 -5px;}.mod-albums .gallery .card {width: 33.3%;float: left;-webkit-box-sizing: border-box;box-sizing: border-box;padding: 0 5px 10px;}.mod-albums .gallery .card .album {position: relative;}.mod-albums .gallery .card img {width: 100%;height: auto;border: 1px solid #eee;}.mod-albums .gallery .card .name {font-size: 12px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;margin-top: 4px;line-height: 14px;max-height: 28px;margin-bottom: 2px;}</style>

引入百度音乐接口

具体参照:

/BADAO_LIUMANG_QIZHI/article/details/84979978

API接口:

http://tingapi./v1/restserver/ting

配置axios跨域访问

本地代理配置

打开config下的index.js

proxyTable: {"/baidu_music_api": {target: "http://tingapi.",changeOrigin: true,pathRewrite: {'^/baidu_music_api': ''}}},

注:

target:要请求的第三方平接口,这里是百度音乐API :http://tingapi./v1/restserver/ting

changeOrigin: true

在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题。

pathRewrite:路径重写

替换target中的请求地址,即别名。

安装axios

到项目跟目录下,打开命令行窗口,输入:

npm install --save axios

然后重启项目

入口文件main.js中引入axios

在项目中找到src下的main.js(入口文件)打开

// The Vue build version to load with the `import` command// (runtime-only or standalone) has been set in webpack.base.conf with an alias.import Vue from 'vue'import App from './App'import router from './router'import Axios from "axios"Vue.prototype.$axios = Axios;Vue.prototype.HOST = "/baidu_music_api"Vue.config.productionTip = false/* eslint-disable no-new */new Vue({el: '#app',router,components: { App },template: '<App/>'})

注:

import Axios from "axios" 引入axios

Vue.prototype.$axios = Axios; 在vue中使用axios,即挂载axios

跨域访问请求数据

在要实现访问的页面,假如加载完就要获取数据,在,mounted中:

mounted(){var url = this.HOST +"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+ this.type+"&size=6&offset=0";this.$axios.get(url).then(res => {this.todayRecommend = res.data.song_list}).catch(error => {console.log(error);})}

将获取的数据获取存放,然后遍历获取并显示数据

完整vue代码:

<template lang="html"><div class= "mod-albums"><div class="hd log url"><h2>{{title}}</h2><router-link :to="{ name:'MoreList',params:{musictype:this.type,title:title}}" tag= "div">更多</router-link></div><div class="container"><div class="gallery"><div class="scroller"><div class="card url" v-for="(item,index) in todayRecommend" :key= "index"><div class= "album"><img :src="item.pic_big" :alt="item.title"><div class="name">{{ item.title }}</div></div></div></div></div></div></div></template><P><script>export default{name:"todayRecommend",data(){return{todayRecommend:[]}},props:{title:{type:String,default:"今日榜单"},type:{type:String,default:"1"}},mounted(){var url = this.HOST +"/v1/restserver/ting?method=baidu.ting.billboard.billList&type= "+ this.type+"&size=6&offset=0";this.$axios.get(url).then(res => {this.todayRecommend = res.data.song_list}).catch(error => {console.log(error);})}}</script><style scoped>.mod-albums {background-color: #fff;padding: 10px 17px;}.hd {display: flex;margin: 14px 0 18px 0;}.hd h2 {-webkit-box-flex: 1;-webkit-flex: 1;flex: 1;margin: 0;padding: 0;font-size: 20px;}.hd div {width: 64px;font-size: 12px;text-align: right;}.mod-albums .gallery {overflow: hidden;margin: 0 -5px;}.mod-albums .gallery .card {width: 33.3%;float: left;-webkit-box-sizing: border-box;box-sizing: border-box;padding: 0 5px 10px;}.mod-albums .gallery .card .album {position: relative;}.mod-albums .gallery .card img {width: 100%;height: auto;border: 1px solid #eee;}.mod-albums .gallery .card .name {font-size: 12px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;margin-top: 4px;line-height: 14px;max-height: 28px;margin-bottom: 2px;}</style>

请求数据效果

此部分代码对应分阶段代码中阶段二

分阶段代码下载位置:

/download/badao_liumang_qizhi/10846557

如果觉得《Vue实现仿音乐播放器5-实现今日推荐访问百度音乐API获取数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。