vuejs开发音乐播放器(一):歌手页面

1、首先看先要实现的功能和界面。

vuejs开发音乐播放器(一):歌手页面_第1张图片

2、具体有如下3个。

(1)歌手列表:用vuejs中的使用QQ音乐接口,抓取列表,并用better-scroll实现滚动。首先我们去qq音乐官网抓包,使用ajax、jsonp获取接口数据。定义好请求参数和头部。获取到数据后,经过_normalizeSinger函数将Fsinger_mid将歌手名字按英文字母正序排序后输出到新的数组
(2)滚动时固定标题栏:通过singer.vue中ES6代码实现。
(3)右侧固定索引:click点击定位,touchmove滑动定位,锚点定位,高亮显示,具体看listview.vue的代码

3、具体代码实现如下。由于篇幅有限,只贴上重要的部分,有想了解的可以加我好友探讨问题。

1、jsonp.js

export default function jsonp(url, data, option) {
  url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
  return new Promise((resolve, reject) => {
    originJSONP(url, option, (err, data) => {
      if (!err) {
        resolve(data)
      } else {
        reject(err)
      }
    })
  })
}

2、config.js

export const commonParams = {
  g_tk: 5381,
  inCharset: 'utf-8',
  outCharset: 'utf-8',
  notice: 0,
  format: 'jsonp'
}

export const options = {
  param: 'jsonpCallback'
}

export const ERR_OK = 0

3、singer.js(引入前两个文件)

import jsonp from 'common/js/jsonp'
import {commonParams, options} from './config'

export function getSingerList() {
  const url = 'https://c.y.qq.com/v8/fcg-bin/v8.fcg'
  const data = Object.assign({}, commonParams, {
    channel: 'singer',
    page: 'list',
    key: 'all_all_all',
    pagesize: 100,
    pagenum: 1,
    hostUin: 0,
    loginUin: 0,
    needNewCode: 0,
    platform: 'yqq',
    g_tk: 5381,
    inCharset: 'utf8',
    outCharset: 'utf-8',
    notice: 0,
    format: 'jsonp'
  })
  return jsonp(url, data, options)
}

4、scroll.vue




                    
                    

你可能感兴趣的:(vuejs)