Vue
已經用了很多時間,最近抽空把之前的未完成的酷狗音樂作完了,過來分享下,也能夠直接點這裏預覽,注意切換成手機模式。css
vue-router
、eventBus
、vuex
、vue-awesome-swiper
或者看圖:html
整體模擬官網,原來的亮點保留,如:vue
除此以外,增長了git
若是參考網易雲,後續能夠加的新功能還有一些,不過暫時我要先去作其餘事了。github
CSS 以爲不難,都是手寫的,採用的是 BEM 規範,js 是 ESLint。vue-router
整體難度適中,只不過,若是規範化,組件化抽象,任務仍是很多的,具體的坑我就不說了,源代碼都在 這裏,推薦想要熟悉 vue
的同窗也本身試下。vuex
做爲一個練手項目,vue
全家桶都覆蓋到了,固然,若是你只用 vue
和 vue-router
去實現,也不是不行,實現到一大半,就會遇到和我第一次作時同樣的困境:api
emit
到 App.vue
,也很繁瑣。若是用 eventBus 也是同樣的繁瑣。每一個子組件,若是要獲取 music.hash
至少都要:跨域
<PlayButton :hash="music.hash" /> <!--還有子組件的 props 配置... --> <StopButton :hash="music.hash" /> <!--還有子組件的 props 配置... --> <NextButton :hash="music.hash" /> <!--還有子組件的 props 配置... -->
vuex
的引入,讓全部的子組件經過 this.$store.state.music.hash
就能夠訪問 music.hash
,更簡單的 this.musicHash
也是能夠的,而且默認值都寫在一個地方,全局共享。less
酷狗的接口在 ecitlm 找到的,跨域有 JsonBird 提供的代理。
src/
文件目錄:
|__ App.vue |__ assets |__ css |__ base.less |__ constant.less |__ iconfont.css |__ reset.css |__ images |__ logo__grey.png |__ logo__text.png |__ logo__theme.png |__ js |__ api.js |__ bus.js |__ globalEvent.js |__ mobileLayout.js |__ utils.js |__ components |__ Main.vue |__ new_song |__ NewSong.vue |__ Slider.vue |__ player |__ NextButton.vue |__ PlayButton.vue |__ PlayerLyrics.vue |__ PlayerMax.vue |__ PlayerMed.vue |__ PlayerProgress.vue |__ PrevButton.vue |__ public |__ AppHeader.vue |__ AppLoading.vue |__ AppMusicList.vue |__ AppNav.vue |__ PubList.vue |__ PubModuleDes.vue |__ PubModuleHead.vue |__ PubModuleTitle.vue |__ rank |__ RankInfo.vue |__ RankList.vue |__ search |__ Search.vue |__ singer |__ SingerCategory.vue |__ SingerInfo.vue |__ SingerList.vue |__ song |__ SongList.vue |__ SongListInfo.vue |__ main.js |__ mixins |__ index.js |__ loading.js |__ router |__ index.js |__ store |__ device.js |__ images.js |__ index.js |__ loading.js |__ newSong.js |__ player.js |__ rank.js |__ search.js |__ singer.js |__ song.js