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