成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于Vue.js的音樂播放器(Webapp)

widuu / 1984人閱讀

摘要:概述項(xiàng)目是基于,成品是一個(gè)移動(dòng)端的音樂播放器,來源于的實(shí)戰(zhàn)課程。播放器是全局組件,放在下面,通過傳遞數(shù)據(jù),觸發(fā)提交,從而使播放器開始工作。將請(qǐng)求的數(shù)據(jù)格式化后再通過傳遞,組件間共享,實(shí)現(xiàn)歌曲的播放切換等。

概述

項(xiàng)目是基于Vue.js,成品是一個(gè)移動(dòng)端的音樂播放器,來源于imooc的實(shí)戰(zhàn)課程。自己動(dòng)手實(shí)踐并加以修改拓展。
項(xiàng)目的大致流程是Vue-cli構(gòu)建開發(fā)環(huán)境,分析需求,設(shè)計(jì)構(gòu)思,規(guī)劃目錄結(jié)構(gòu),開始編碼。

視圖層

推薦頁

歌手頁

歌手詳情

歌曲排行榜

排行榜詳情

搜索頁

用戶中心

數(shù)據(jù)來源

所有數(shù)據(jù)都來自于QQ音樂,抓取自QQ的接口,大部分接口都是JSONP,抓取比較容易,其中一些接口限制了host,不能直接抓取,采用的方法是用axios代理,設(shè)置header,以此繞過host的限制。
PS:具體代碼請(qǐng)看prod.server.js文件

技術(shù)棧

Vue

Vuex

Vue-Router

Vue-cli

Stylus

Axios

ESlint

Better-scroll

src目錄結(jié)構(gòu)

難點(diǎn) player組件

講一講player 播放器組件,播放器組件可謂是整個(gè)項(xiàng)目的核心,當(dāng)然數(shù)據(jù)處理和用戶體驗(yàn)方面也是不簡(jiǎn)單的(逃。
播放器是全局組件,放在App.vue下面,通過Vuex傳遞數(shù)據(jù),觸發(fā)action提交mutation,從而使播放器開始工作。當(dāng)然,其中的數(shù)據(jù)交互說復(fù)雜也不是很復(fù)雜,就是要花多點(diǎn)時(shí)間理解,player組件由多個(gè)基礎(chǔ)組件構(gòu)成,具體請(qǐng)看項(xiàng)目代碼,下面上圖

為了防止切換歌曲時(shí)點(diǎn)擊速度過快導(dǎo)致歌曲播放錯(cuò)誤,使用了audioonplayAPI,結(jié)合Vuex獲取到數(shù)據(jù),判斷當(dāng)前歌曲數(shù)據(jù)請(qǐng)求到才可以切換下一首歌曲,判斷函數(shù)如下

 ready() {
   this.songReady = true
 }
數(shù)據(jù)處理

通過調(diào)用QQ音樂的JSONP接口,獲取的數(shù)據(jù)并不能直接拿來用,需要做進(jìn)一步的規(guī)格化,達(dá)到我們使用的要求,所以在這方面多帶帶封裝了一個(gè)class來處理這方面的數(shù)據(jù),具體請(qǐng)看src/common/js/song.js

在請(qǐng)求JSONP的時(shí)候,用到了一個(gè)JSONP庫,這個(gè)庫代碼十分簡(jiǎn)短,只有幾十行,有興趣的同學(xué)可以學(xué)習(xí)下。

使用時(shí),就是將請(qǐng)求的參數(shù)拼接在請(qǐng)求url上,然后調(diào)用這個(gè)庫的jsonp方法。所以,在此封裝了兩個(gè)函數(shù),一個(gè)是將參數(shù)拼接在url上,另一個(gè)是將庫里面的jsonp方法Promise化,方便我們使用,具體請(qǐng)查看src/common/js/jsonp.js

將請(qǐng)求的數(shù)據(jù)格式化后再通過Vuex傳遞,組件間共享,實(shí)現(xiàn)歌曲的播放切換等。

交互體驗(yàn)

該項(xiàng)目的很多地方都涉及到滾動(dòng),包括下拉滾動(dòng),下拉滾動(dòng)刷新等。這里面用到了一個(gè)庫(better-scroll),來實(shí)現(xiàn)所有涉及到的滾動(dòng),建議學(xué)習(xí)下它的API。

其他動(dòng)畫包括了Vuetransition動(dòng)畫,路由之間切換時(shí)的簡(jiǎn)單動(dòng)畫,播放器打開時(shí)的動(dòng)畫,這個(gè)地方比較難,也比較好玩。

打開頁面時(shí)的加載Loading效果,其實(shí)就是一個(gè)Loading組件,也比較簡(jiǎn)單。

為了減少流量,圖片加載使用了懶加載的方式,滾動(dòng)時(shí)再加載真實(shí)的圖片。
具體效果請(qǐng)自身體驗(yàn):)

效果




構(gòu)建 開發(fā)環(huán)境
# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# run e2e tests
npm run e2e

# run all tests
npm test
生產(chǎn)環(huán)境
# build for production with minification
npm run build
# run
node prod.server.js
總結(jié)

通過學(xué)習(xí)該項(xiàng)目,自己收獲了許多,實(shí)踐中也遇到了大大小小許多問題,通過斷點(diǎn)調(diào)試等最終解決了,對(duì)我來說無疑是最大的鼓勵(lì),也希望能與大家一起學(xué)習(xí)。
項(xiàng)目地址:https://github.com/k-water/vue-music
喜歡的點(diǎn)個(gè)贊
完 :)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/84444.html

相關(guān)文章

  • 【收藏】2019年最新Vue相關(guān)精品開源項(xiàng)目庫匯總

    摘要:前言本文的前身是源自上的項(xiàng)目但由于該項(xiàng)目上次更新時(shí)間為年月日,很多內(nèi)容早已過期或是很多近期優(yōu)秀組件未被收錄,所以小肆今天重新更新了內(nèi)容并新建項(xiàng)目。提交的項(xiàng)目格式如下項(xiàng)目名稱子標(biāo)題相關(guān)介紹如果收錄的項(xiàng)目有錯(cuò)誤,可以通過反饋給小肆。 前言 本文的前身是源自github上的項(xiàng)目awesome-github-vue,但由于該項(xiàng)目上次更新時(shí)間為2017年6月12日,很多內(nèi)容早已過期或是很多近期優(yōu)...

    williamwen1986 評(píng)論0 收藏0
  • Vue 實(shí)現(xiàn)網(wǎng)易云音樂 WebApp

    摘要:基于等開發(fā)一款移動(dòng)端音樂,界面參考了安卓版的網(wǎng)易云音樂布局適配常見移動(dòng)端。圖標(biāo)使用阿里巴巴圖標(biāo)庫,中間的唱片旋轉(zhuǎn)動(dòng)畫使用了實(shí)現(xiàn)。搜索功能實(shí)現(xiàn)功能搜索歌手歌單歌曲熱門搜索數(shù)據(jù)節(jié)流上拉刷新保存搜索記錄。 基于 Vue(2.5) + vuex + vue-router + vue-axios +better-scroll + Scss + ES6 等開發(fā)一款移動(dòng)端音樂 WebApp,UI ...

    Karuru 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<