摘要:基于等開(kāi)發(fā)一款移動(dòng)端音樂(lè),界面參考了安卓版的網(wǎng)易云音樂(lè)布局適配常見(jiàn)移動(dòng)端。圖標(biāo)使用阿里巴巴圖標(biāo)庫(kù),中間的唱片旋轉(zhuǎn)動(dòng)畫(huà)使用了實(shí)現(xiàn)。搜索功能實(shí)現(xiàn)功能搜索歌手歌單歌曲熱門(mén)搜索數(shù)據(jù)節(jié)流上拉刷新保存搜索記錄。
基于 Vue(2.5) + vuex + vue-router + vue-axios +better-scroll + Scss + ES6 等開(kāi)發(fā)一款移動(dòng)端音樂(lè) WebApp,UI 界面參考了安卓版的網(wǎng)易云音樂(lè)、flex 布局適配常見(jiàn)移動(dòng)端。
因?yàn)榉?wù)器的原因,所以可能多人訪問(wèn)的時(shí)候有些東西會(huì)加載不出來(lái),如果可以的話一會(huì)再訪問(wèn)應(yīng)該就沒(méi)什么問(wèn)題了,出現(xiàn)這樣的問(wèn)題,實(shí)在抱歉。
項(xiàng)目演示地址:移動(dòng)端音樂(lè) WebApp,或者可以掃描二維碼訪問(wèn):
推薦使用手機(jī)訪問(wèn),電腦在 Chrome 調(diào)試模式下食用效果更佳,開(kāi)啟調(diào)試模式的手機(jī)模式后,如果不能滾動(dòng),刷新一下頁(yè)面即可
源碼地址:vue-music-webapp,歡迎 star 和 fork 哦~
如果你覺(jué)得我做的不錯(cuò)的話,我就厚著臉皮求個(gè) star ?? 哈,star 是對(duì)我最大的鼓勵(lì)(老臉一紅)預(yù)覽
圖片雖然壓縮過(guò)了,但是幾張加載一起還是有 3MB 左右,所以請(qǐng)耐心等待一下啦。感覺(jué)不錯(cuò)的可以去上面 的地址體驗(yàn)一下呦~
推薦、排行榜、歌手 歌單詳情、個(gè)人中心 播放器、播放列表 搜索頁(yè)面 開(kāi)發(fā)目的通過(guò)學(xué)習(xí)開(kāi)發(fā)一個(gè) Vue 全家桶項(xiàng)目,讓自己更熟練的使用 Vue 全家桶、模塊化開(kāi)發(fā)、ES6 等等知識(shí),提高自己的技術(shù)能力。
技術(shù)棧前端
Vue:用于構(gòu)建用戶界面的 MVVM 框架
vue-router:為單頁(yè)面應(yīng)用提供的路由系統(tǒng),使用了 Lazy Loading Routes 技術(shù)來(lái)實(shí)現(xiàn)異步加載優(yōu)化性能
vuex:Vue 集中狀態(tài)管理,在多個(gè)組件共享某些狀態(tài)時(shí)非常便捷
vue-lazyload:實(shí)現(xiàn)圖片懶加載,節(jié)省用戶流量,優(yōu)化頁(yè)面加載速度
better-scroll:解決移動(dòng)端各種滾動(dòng)場(chǎng)景需求的插件,使移動(dòng)端滑動(dòng)體驗(yàn)更加流暢
SCSS:css 預(yù)編譯處理器
ES6:ECMAScript 新一代語(yǔ)法,模塊化、解構(gòu)賦值、Promise、Class 等方法非常好用
后端
Node.js:利用 Express 搭建的本地測(cè)試服務(wù)器
vue-axios:用來(lái)請(qǐng)求后端 API 音樂(lè)數(shù)據(jù)
NeteaseCloudMusicApi:網(wǎng)易云音樂(lè) NodeJS 版 API,提供音樂(lè)數(shù)據(jù)
其他工具
vue-cli:Vue 腳手架工具,快速初始化項(xiàng)目代碼
eslint:代碼風(fēng)格檢查工具,幫助我們規(guī)范代碼書(shū)寫(xiě)(一定要養(yǎng)成良好的代碼規(guī)范)
iconfont :阿里巴巴圖標(biāo)庫(kù),誰(shuí)用誰(shuí)知道
fastclick :消除 click 移動(dòng)游覽器 300ms 的延
實(shí)現(xiàn)功能播放器內(nèi)核、推薦頁(yè)面、熱榜頁(yè)面、歌手頁(yè)面、歌單詳情、歌手詳情、排行榜詳情、搜索頁(yè)面、播放列表、用戶中心等等功能。
推薦頁(yè)面推薦頁(yè)分成三個(gè)部分,分別是 banner 輪播圖、推薦歌單、推薦歌曲,數(shù)據(jù)都是使用 axios 請(qǐng)求 API 獲取得到的,圖片都使用 vue-lazyload 實(shí)現(xiàn)懶加載。
輪播圖:使用 better-scroll 實(shí)現(xiàn),具體可以看這里 Slide 。點(diǎn)擊跳轉(zhuǎn)方面只實(shí)現(xiàn)歌曲和歌單的跳轉(zhuǎn),因?yàn)闀簳r(shí)只實(shí)現(xiàn)了這兩個(gè)功能。
推薦歌單,推薦歌曲:使用 vuex 管理數(shù)據(jù),方便組件之間的數(shù)據(jù)交互(播放器播放歌曲)。因?yàn)閿?shù)據(jù)上還有播放數(shù)量,所以就順便也加上去了。
排行榜頁(yè)面同樣是通過(guò) API 獲取到排行榜的數(shù)據(jù),但是因?yàn)?API 獲取到的是排行榜中所有歌曲的數(shù)據(jù),所以難免在加載速度上有點(diǎn)慢,后期再看能不能優(yōu)化一下,加載的慢畢竟太影響用戶體驗(yàn)了,別的就沒(méi)什么了。
歌手頁(yè)面實(shí)現(xiàn)歌手列表的左右聯(lián)動(dòng)(這個(gè)需要理解理解),因?yàn)橹耙呀?jīng)寫(xiě)過(guò)和這個(gè)有關(guān)的博客,所以就不多寫(xiě)了,具體可以看我之前的這個(gè)筆記 移動(dòng)端字母索引導(dǎo)航 。
歌曲列表組件用來(lái)顯示歌曲列表,在很多的地方都進(jìn)行了復(fù)用,例如:歌單詳情頁(yè)、排行榜詳情頁(yè)、歌手詳情頁(yè)、搜索結(jié)果、用戶中心等等。
歌單詳情頁(yè)通過(guò)歌單的 ID 來(lái)獲取歌單中的歌曲數(shù)據(jù),然后還做了一些體驗(yàn)上面的交互,比如上滑顯示狀態(tài)欄然后將狀態(tài)欄標(biāo)題變?yōu)楦鑶蚊唧w可以嘗試一下就知道了。
然后就是復(fù)用 歌曲列表組建 來(lái)顯示歌曲。
排行榜詳情、歌手詳情和歌單詳情基本上沒(méi)有什么區(qū)別,除了 UI 界面方面有細(xì)微的改動(dòng)(根據(jù)不同的內(nèi)容作出不同的優(yōu)化)。
播放器最最最重要的組件,畢竟是個(gè)音樂(lè)播放器,不能放歌那啥都是扯淡了。
實(shí)現(xiàn)功能:順序播放、單曲循環(huán)、隨機(jī)播放、收藏等。
播放、暫停使用 HTML5 的 audio 實(shí)現(xiàn)。
數(shù)據(jù)、播放狀態(tài)、播放歷史、習(xí)慣歌曲等方面使用了 vuex 來(lái)進(jìn)行管理,因?yàn)閿?shù)據(jù)太多,組件直接傳遞的話是會(huì)死人的,所以還是老老實(shí)實(shí)的用 vuex 吧,數(shù)據(jù)之前的傳遞真的很方便。
圖標(biāo)使用 iconfont 阿里巴巴圖標(biāo)庫(kù),中間的唱片旋轉(zhuǎn)動(dòng)畫(huà)使用了 animation 實(shí)現(xiàn)。
歌詞部分獲取到網(wǎng)易的歌詞數(shù)據(jù),然后使用 第三方庫(kù) lyric-parser 進(jìn)行處理。實(shí)現(xiàn)顯示歌詞、拖動(dòng)進(jìn)度條歌詞同步滾動(dòng)、歌詞跟隨歌曲進(jìn)度高亮。
通過(guò) localstorage 存儲(chǔ)喜歡歌曲、播放歷史數(shù)據(jù)。
audio 標(biāo)簽在移動(dòng)端不能夠自動(dòng)播放的問(wèn)題電腦端是沒(méi)有這個(gè)問(wèn)題的,這個(gè)問(wèn)題真的是讓我很頭大,最后是用了很鬼畜的方法解決了(使用 addEventListener 監(jiān)聽(tīng) touchend 事件,然后在回調(diào)函數(shù)中讓 audio 播放一次,具體看 App.vue 文件,注釋有寫(xiě))。
播放列表顯示和管理當(dāng)前播放歌曲,可以用來(lái)刪除列表中的歌曲、以及選擇播放歌曲。
搜索功能實(shí)現(xiàn)功能:搜索歌手、歌單、歌曲、熱門(mén)搜索、數(shù)據(jù)節(jié)流、上拉刷新、保存搜索記錄。
通過(guò)關(guān)鍵字請(qǐng)求 API 獲取搜索數(shù)據(jù),顯示歌手、歌單、歌曲。
實(shí)現(xiàn)了上刷新,因?yàn)樗阉骺梢栽O(shè)置請(qǐng)求數(shù)據(jù)的條數(shù),所以可以用來(lái)實(shí)現(xiàn)上刷新的功能。
通過(guò)節(jié)流函數(shù)實(shí)現(xiàn)數(shù)據(jù)節(jié)流,通過(guò) localstorage 存儲(chǔ)搜索數(shù)據(jù)。
用戶中心將在本地存儲(chǔ)的數(shù)據(jù)顯示出來(lái),方便用戶使用,后期準(zhǔn)備添加更多功能。
TODO優(yōu)化排行榜加載速度
優(yōu)化重復(fù)代碼
增加歌曲評(píng)論
增加 MV、電臺(tái) 功能
emm,更多功能容我再想想哈
感謝感謝 Binaryify 對(duì)接口文檔 NeteaseCloudMusicApi 的不斷維護(hù)與更新。
感謝 ustbhuangyi 老師的 Vue 實(shí)戰(zhàn)教程 ,讓我學(xué)習(xí)到很多 vue 的知識(shí)。
最后最后的最后當(dāng)然是厚著臉皮的再求個(gè) star 啦,如果覺(jué)得我的項(xiàng)目還不錯(cuò)的話 ,就給個(gè) star 鼓勵(lì)一下吧~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/95021.html
摘要:很多小伙伴練手都會(huì)去仿寫(xiě)豆瓣電影或者網(wǎng)易云音樂(lè),所以,這回干脆把兩個(gè)集合起來(lái),具體長(zhǎng)什么樣,請(qǐng)各位看預(yù)覽或下面圖片啦。怎么折騰法呢比如豆瓣部分我使用了,網(wǎng)易云部分則沒(méi)有,網(wǎng)易的組件則是自己造的輪子,當(dāng)然在實(shí)際開(kāi)發(fā)中肯定不會(huì)這么搞啦。。 很多小伙伴練手都會(huì)去仿寫(xiě)豆瓣電影或者網(wǎng)易云音樂(lè),所以,這回干脆把兩個(gè)集合起來(lái),具體長(zhǎng)什么樣,請(qǐng)各位看預(yù)覽或下面圖片啦。 目的: 做這個(gè)項(xiàng)目最主要的目的是...
摘要:這是一個(gè)基于實(shí)現(xiàn)的網(wǎng)易云音樂(lè)的。在線地址主頁(yè)功能瀏覽搜索觀看查看評(píng)論截圖技術(shù)點(diǎn)安裝運(yùn)行鳴謝此網(wǎng)站提供的此接口的說(shuō)明請(qǐng)到這里查看 Vue2-MV 這是一個(gè)基于Vue2實(shí)現(xiàn)的網(wǎng)易云音樂(lè)MV的webapp。 在線地址github 主頁(yè)功能 瀏覽搜索MV 觀看MV 查看MV評(píng)論 截圖 showImg(https://segmentfault.com/img/remote/146000000...
摘要:仿網(wǎng)易云音樂(lè)項(xiàng)目地址來(lái)源感謝讓我能用喜歡的東西做一個(gè)屬于自己的播放器源碼地址不要臉的求哈哈哈項(xiàng)目預(yù)覽端按切換手機(jī)調(diào)試模式效果更佳移動(dòng)端可直接掃碼技術(shù)棧文件結(jié)構(gòu)構(gòu)建服務(wù)和配置項(xiàng)目不同環(huán)境的配置項(xiàng)目目錄項(xiàng)目入口文件項(xiàng)目配置文件靜態(tài)資源生產(chǎn)目錄 仿網(wǎng)易云音樂(lè)(webapp) 項(xiàng)目地址 (project address) api來(lái)源 感謝binaryify讓我能用喜歡的東西做一個(gè)屬于自己的...
閱讀 3059·2023-04-25 20:09
閱讀 3328·2021-11-23 09:51
閱讀 1982·2021-11-22 15:25
閱讀 3362·2021-11-18 10:02
閱讀 2761·2021-09-27 13:56
閱讀 1317·2019-08-30 15:44
閱讀 1160·2019-08-30 13:21
閱讀 3332·2019-08-30 11:05