vue使用jsonp抓取qq音乐数据的方法


Posted in Javascript onJune 21, 2018

1、安装jsonp

npm install jsonp

2、创建jsonp.js文件,内容如下:

import originJSONP from 'jsonp'
/** * 封装jsonp
 * @param {*} url 原始的jsonp第一个参数是url,第二个参数是option,这里为了比较好写参数做了下封装
 * @param {obj} data 参数
 * @param {*} option jsonp的option
 */
export default function jsonp (url, data, option) {
 // 如果url没有?就加一个?拼接
 url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
 return new Promise((resolve, reject) => {
  // 原始jsonp的三个参数,url、option、回调函数
  originJSONP(url, option, (err, data) => {
   // 类似node的设计,如果err是null,表示成功,data是后端返回的数据
   if (!err) {
    resolve(data)
   } else {
    reject(err)
   }
  })
 })
}
export function param (data) {
 let url = ''
 for (var k in data) {
  let value = data[k] !== undefined ? data[k] : ''
  url += '&' + k + '=' + encodeURIComponent(value)
 }
 return url ? url.substring(1) : ''
}

3、创建confiig.js文件,内容如下:

// 用于存放公共数据
export const commonParams = {
 g_tk: 5381,
 format: 'json',
 inCharset: 'utf - 8',
 outCharset: 'utf - 8',
 notice: 0
}
export const options = {
 param: 'jsonpCallback'
}
export const ERR_OK = 0

3、创建recommend.js文件,内容如下:

import jsonp from './jsonp'
import { commonParams, options } from './config'
export function getRecommend () {
 const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'
 const data = Object.assign({}, commonParams, {
  platform: 'h5', uin: 0, needNewCode: 1
 })
 // 这里返回一个promise对象
 return jsonp(url, data, options)
}

4、在组件中使用,如musicHall.vue中

<script>
import {getRecommend} from '../api/recommend.js'
import {ERR_OK} from '../api/config.js'
export default {
 mounted () {
  //在created中也可
  this._getRecommend()
 },
 methods: {
  _getRecommend () {
   getRecommend().then((res) => {
    if (res.code === ERR_OK) {
     console.log(res.data.slider)
    }
   })
  }
 }
}
</script>

5、总结

  • Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)
  • Object.assign(target, source1, source2)
  • encodeURIComponent(URIstring)函数可把字符串作为 URI 组件进行编码。 URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。
  • substring()方法用于提取字符串中介于两个指定下标之间的字符。
  • stringObject.substring(start,stop)包括 start 处的字符,但不包括 stop 处的字符。不接受负的参数。

总结

以上所述是小编给大家介绍的vue使用jsonp抓取qq音乐数据的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
BOM与DOM的区别分析
Oct 26 Javascript
javascript检测页面是否缩放的小例子
May 16 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
js判断上传文件类型判断FileUpload文件类型代码
May 20 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
Oct 05 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
webpack学习--webpack经典7分钟入门教程
Jun 28 Javascript
Node.js使用Angular简单示例
May 11 Javascript
微信小程序实现自动定位功能
Oct 31 Javascript
通过vue手动封装on、emit、off的代码详解
May 29 Javascript
微信小程序自定义yPicker组件实现省市区三级联动功能
Oct 29 Javascript
Vue 获取数组键名的方法
Jun 21 #Javascript
Taro集成Redux快速上手的方法示例
Jun 21 #Javascript
vue2.0项目实现路由跳转的方法详解
Jun 21 #Javascript
JS实现快递单打印功能【推荐】
Jun 21 #Javascript
详解javascript中的babel到底是什么
Jun 21 #Javascript
webpack打包react项目的实现方法
Jun 21 #Javascript
Vue Router的懒加载路径的解决方法
Jun 21 #Javascript
You might like
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php里array_work用法实例分析
2015/07/13 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
django的登录注册系统的示例代码
2018/05/14 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
Python 在函数上添加包装器
2020/07/28 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
Molton Brown美国官网:奢华美容、香水、沐浴和身体护理
2020/09/02 全球购物
旷课检讨书大全
2014/01/21 职场文书
村干部培训方案
2014/05/02 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
党性分析自查总结
2014/10/14 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
网吧管理制度范本
2015/08/05 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
使用 Docker Compose 构建复杂的多容器App
2022/04/30 Servers