热门歌单
18 |{{item.dissname}}
32 | 33 |├── static └── .gitkeep ├── .eslintignore ├── .gitignore ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── src ├── assets │ ├── icon.png │ ├── logo.png │ ├── icon-mv.png │ ├── icon-back.png │ ├── icon-like.png │ ├── icon-list.png │ ├── icon-play.png │ ├── icon-RANDOM.png │ ├── icon-album.png │ ├── icon-jiantou.png │ ├── icon-music.png │ ├── icon-pause.png │ ├── icon-search.png │ ├── icon-share.png │ ├── icon-singer.png │ ├── icon-xiayiqu.png │ ├── Vue_Music_Blur.png │ ├── icon-...black.png │ ├── icon-shangyiqu.png │ ├── icon-SEQUENTIAL.png │ ├── icon-volue-left.png │ ├── icon-volue-right.png │ ├── icon-back.svg │ ├── icon-back-white.svg │ ├── icon-mvcount.svg │ ├── icon-playing.svg │ ├── icon-erji.svg │ ├── error.svg │ ├── icon-SINGLE.svg │ └── loading.svg ├── lib │ ├── components │ │ ├── actionsheet │ │ │ ├── component.json │ │ │ ├── metas.yml │ │ │ └── index.vue │ │ ├── mvitem.vue │ │ └── index.js │ ├── styles │ │ ├── index.vue │ │ ├── tap.less │ │ ├── weui │ │ │ ├── base │ │ │ │ ├── variable │ │ │ │ │ ├── weui_grid.less │ │ │ │ │ ├── weui_progress.less │ │ │ │ │ ├── weui_msg.less │ │ │ │ │ ├── monokai.less │ │ │ │ │ ├── weui_cell.less │ │ │ │ │ ├── weui_button.less │ │ │ │ │ └── global.less │ │ │ │ ├── reset.less │ │ │ │ ├── mixin │ │ │ │ │ ├── mobile.less │ │ │ │ │ ├── text.less │ │ │ │ │ ├── setChecked.less │ │ │ │ │ ├── setOnepx.less │ │ │ │ │ └── setArrow.less │ │ │ │ └── fn.less │ │ │ ├── widget │ │ │ │ ├── weui_cell │ │ │ │ │ ├── weui_check.less │ │ │ │ │ ├── weui_check │ │ │ │ │ │ ├── weui_check_common.less │ │ │ │ │ │ ├── weui_radio.less │ │ │ │ │ │ └── weui_checkbox.less │ │ │ │ │ ├── weui_form │ │ │ │ │ │ ├── weui_select_after.less │ │ │ │ │ │ ├── weui_vcode.less │ │ │ │ │ │ ├── weui_select_before.less │ │ │ │ │ │ ├── weui_select.less │ │ │ │ │ │ └── weui_form_common.less │ │ │ │ │ ├── weui_form.less │ │ │ │ │ ├── weui_access.less │ │ │ │ │ ├── weui_switch.less │ │ │ │ │ ├── weui_cell_global.less │ │ │ │ │ └── weui_uploader.less │ │ │ │ ├── weui_button │ │ │ │ │ ├── weui_btn_disabled.less │ │ │ │ │ ├── weui_btn_warn.less │ │ │ │ │ ├── weui_btn_primary.less │ │ │ │ │ ├── weui_btn_default.less │ │ │ │ │ ├── weui_btn_plain.less │ │ │ │ │ ├── weui_btn_global.less │ │ │ │ │ └── weui_button.less │ │ │ │ ├── weui_tab │ │ │ │ │ ├── weui_tab.less │ │ │ │ │ ├── weui_tab_tabbar.less │ │ │ │ │ ├── navbar.less │ │ │ │ │ └── tabbar.less │ │ │ │ ├── weui_progress │ │ │ │ │ └── weui_progress.less │ │ │ │ ├── weui_page │ │ │ │ │ ├── weui_article.less │ │ │ │ │ └── weui_msg.less │ │ │ │ ├── weui_tips │ │ │ │ │ ├── weui_mask.less │ │ │ │ │ ├── weui_actionsheet.less │ │ │ │ │ ├── weui_dialog.less │ │ │ │ │ └── weui_toast.less │ │ │ │ ├── weui_panel │ │ │ │ │ └── weui_panel.less │ │ │ │ ├── weui_grid │ │ │ │ │ └── weui_grid.less │ │ │ │ ├── weui_media_box │ │ │ │ │ └── weui_media_box.less │ │ │ │ └── weui_searchbar │ │ │ │ │ └── weui_searchbar.less │ │ │ ├── weui.less │ │ │ └── icon │ │ │ │ ├── weui_icon_font.less │ │ │ │ └── weui_font.less │ │ ├── index.less │ │ ├── center.less │ │ ├── reset.less │ │ ├── loading.less │ │ ├── transition.less │ │ ├── close.less │ │ ├── reddot.less │ │ ├── variable.less │ │ └── 1px.less │ ├── libs │ │ ├── mixin_uuid.js │ │ ├── trim.js │ │ ├── router.js │ │ ├── base.js │ │ └── eventor.js │ └── mixins │ │ └── multi-items.js ├── store │ ├── index.js │ ├── ApiService.js │ ├── NotifyService.js │ └── PlayService.js ├── components │ ├── Hello.vue │ ├── ActionSheet.vue │ ├── Lyric.vue │ ├── Rank.vue │ ├── PlayingList.vue │ ├── Recommand.vue │ ├── Play.vue │ ├── Album.vue │ ├── Cd.vue │ └── Search.vue ├── main.js ├── config │ ├── def.js │ └── api.js ├── style │ ├── weui_mask.less │ └── weui_actionsheet.less ├── router.js ├── utils │ └── base64.js └── App.vue ├── .babelrc ├── .editorconfig ├── index.html ├── .gitattributes ├── .eslintrc.js ├── package.json └── README.md /static/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log 5 | .idea/ -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/icon-mv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-mv.png -------------------------------------------------------------------------------- /src/lib/components/actionsheet/component.json: -------------------------------------------------------------------------------- 1 | { 2 | "vux": { 3 | "is_weui": true 4 | } 5 | } -------------------------------------------------------------------------------- /src/assets/icon-back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-back.png -------------------------------------------------------------------------------- /src/assets/icon-like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-like.png -------------------------------------------------------------------------------- /src/assets/icon-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-list.png -------------------------------------------------------------------------------- /src/assets/icon-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-play.png -------------------------------------------------------------------------------- /src/assets/icon-RANDOM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-RANDOM.png -------------------------------------------------------------------------------- /src/assets/icon-album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-album.png -------------------------------------------------------------------------------- /src/assets/icon-jiantou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-jiantou.png -------------------------------------------------------------------------------- /src/assets/icon-music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-music.png -------------------------------------------------------------------------------- /src/assets/icon-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-pause.png -------------------------------------------------------------------------------- /src/assets/icon-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-search.png -------------------------------------------------------------------------------- /src/assets/icon-share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-share.png -------------------------------------------------------------------------------- /src/assets/icon-singer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-singer.png -------------------------------------------------------------------------------- /src/assets/icon-xiayiqu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-xiayiqu.png -------------------------------------------------------------------------------- /src/assets/Vue_Music_Blur.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/Vue_Music_Blur.png -------------------------------------------------------------------------------- /src/assets/icon-...black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-...black.png -------------------------------------------------------------------------------- /src/assets/icon-shangyiqu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-shangyiqu.png -------------------------------------------------------------------------------- /src/assets/icon-SEQUENTIAL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-SEQUENTIAL.png -------------------------------------------------------------------------------- /src/assets/icon-volue-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-volue-left.png -------------------------------------------------------------------------------- /src/assets/icon-volue-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/calamus0427/vue-music/master/src/assets/icon-volue-right.png -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } 6 | -------------------------------------------------------------------------------- /src/lib/styles/index.vue: -------------------------------------------------------------------------------- 1 | // this component is used only for building vux.css 2 | -------------------------------------------------------------------------------- /src/lib/libs/mixin_uuid.js: -------------------------------------------------------------------------------- 1 | export default { 2 | created () { 3 | this.uuid = Math.random().toString(36).substring(3, 8) 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/lib/styles/tap.less: -------------------------------------------------------------------------------- 1 | .vux-tap-active { 2 | tap-highlight-color: rgba(0,0,0,0); 3 | } 4 | .vux-tap-active:active { 5 | background-color: #ECECEC; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/lib/styles/weui/base/variable/weui_grid.less: -------------------------------------------------------------------------------- 1 | @weuiGridBorderColor:#D9D9D9; 2 | @weuiGridFontSize: 14px; 3 | @weuiGridIconSize: 28px; 4 | @weuiGridColumnCount: 3; -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_cell/weui_check.less: -------------------------------------------------------------------------------- 1 | @import "../../base/fn"; 2 | @import "./weui_check/weui_check_common"; 3 | @import "./weui_check/weui_radio"; 4 | @import "./weui_check/weui_checkbox"; 5 | -------------------------------------------------------------------------------- /src/lib/styles/weui/base/variable/weui_progress.less: -------------------------------------------------------------------------------- 1 | @weuiProgressBg: #EBEBEB; 2 | @weuiProgressColor: #09BB07; 3 | @weuiProgressHeight: 3px; 4 | @weuiProgressCloseBg: #EF4F4F; 5 | @weuiProgressActiveBg: #C13E3E; 6 | -------------------------------------------------------------------------------- /src/lib/styles/index.less: -------------------------------------------------------------------------------- 1 | @import 'reset.less'; 2 | @import '1px.less'; 3 | @import 'center.less'; 4 | @import 'reddot.less'; 5 | @import 'transition.less'; 6 | @import 'loading.less'; 7 | @import 'close.less'; 8 | @import 'tap.less'; -------------------------------------------------------------------------------- /src/lib/styles/weui/base/variable/weui_msg.less: -------------------------------------------------------------------------------- 1 | @weuiMsgPaddingTop:36px; 2 | @weuiMsgIconGap:30px; 3 | @weuiMsgTitleGap:5px; 4 | @weuiMsgTextGap:25px; 5 | @weuiMsgOprGap:25px; 6 | @weuiMsgExtraAreaGap:15px; 7 | @weuiMsgExtraAreaOfMinHeight:438px; -------------------------------------------------------------------------------- /src/lib/styles/center.less: -------------------------------------------------------------------------------- 1 | .vux-center-v, .vux-center-h, .vux-center { 2 | display: flex; 3 | } 4 | 5 | .vux-center-v, .vux-center { 6 | align-items: center; 7 | } 8 | 9 | .vux-center-h, .vux-center { 10 | justify-content: center; 11 | } -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_cell/weui_check/weui_check_common.less: -------------------------------------------------------------------------------- 1 | @import "../../../base/fn"; 2 | 3 | .weui_check_label { 4 | .setTapColor(); 5 | } 6 | 7 | .weui_check{ 8 | position: absolute; 9 | left: -9999em; 10 | } 11 | -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_cell/weui_form/weui_select_after.less: -------------------------------------------------------------------------------- 1 | @import "../../../base/fn"; 2 | @import "./weui_select"; 3 | 4 | .weui_select_after { 5 | padding-left:@weuiCellGapH; 6 | .weui_select { 7 | padding-left:0; 8 | } 9 | } -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_button/weui_btn_disabled.less: -------------------------------------------------------------------------------- 1 | @import "../../base/fn"; 2 | 3 | .weui_btn_disabled { 4 | color: @weuiBtnDisabledFontColor; 5 | &.weui_btn_default { 6 | color: @weuiBtnDefaultDisabledFontColor; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_cell/weui_form.less: -------------------------------------------------------------------------------- 1 | @import "../../base/fn"; 2 | @import "./weui_form/weui_form_common"; 3 | @import "./weui_form/weui_select"; 4 | @import "./weui_form/weui_select_before"; 5 | @import "./weui_form/weui_select_after"; 6 | @import "./weui_form/weui_vcode"; 7 | -------------------------------------------------------------------------------- /src/lib/styles/weui/base/variable/monokai.less: -------------------------------------------------------------------------------- 1 | @monokaiCaret:#F8F8F0; 2 | @monokaiGreen:#A6E22E; 3 | @monokaiOrange:#FD971F; 4 | @monokaiBlue:#66D9EF; 5 | @monokaiRed:#F92672; 6 | @monokaiPurple:#AE81FF; 7 | @monokaiBrown:#E6DB74; 8 | @monokaiFindHighlight:#FFE792; 9 | @monokaiLineHighlight:#3E3D32; 10 | @monokaiSelection:#49483E; 11 | @monokaiBg:#272822; -------------------------------------------------------------------------------- /src/lib/styles/reset.less: -------------------------------------------------------------------------------- 1 | html { 2 | -ms-text-size-adjust: 100%; 3 | -webkit-text-size-adjust: 100%; 4 | } 5 | 6 | body { 7 | line-height: 1.6; 8 | font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; 9 | } 10 | 11 | * { 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | a img { 17 | border: 0; 18 | } 19 | 20 | a { 21 | text-decoration: none; 22 | } -------------------------------------------------------------------------------- /src/lib/styles/weui/base/reset.less: -------------------------------------------------------------------------------- 1 | @import "fn"; 2 | 3 | html { 4 | -ms-text-size-adjust: 100%; 5 | -webkit-text-size-adjust: 100%; 6 | } 7 | 8 | body { 9 | line-height: 1.6; 10 | font-family: @sansFont; 11 | } 12 | 13 | * { 14 | margin: 0; 15 | padding: 0; 16 | } 17 | 18 | a img { 19 | border: 0; 20 | } 21 | 22 | a { 23 | text-decoration: none; 24 | } -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_button/weui_btn_warn.less: -------------------------------------------------------------------------------- 1 | @import "../../base/fn"; 2 | 3 | .weui_btn_warn { 4 | background-color: @weuiBtnWarnBg; 5 | &:not(.weui_btn_disabled):visited { 6 | color: @weuiBtnFontColor; 7 | } 8 | &:not(.weui_btn_disabled):active { 9 | color: @weuiBtnActiveFontColor; 10 | background-color: @weuiBtnWarnActiveBg; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/lib/styles/weui/widget/weui_button/weui_btn_primary.less: -------------------------------------------------------------------------------- 1 | @import "../../base/fn"; 2 | 3 | .weui_btn_primary { 4 | background-color: @weuiBtnPrimaryBg; 5 | &:not(.weui_btn_disabled):visited { 6 | color: @weuiBtnFontColor; 7 | } 8 | &:not(.weui_btn_disabled):active { 9 | color: @weuiBtnActiveFontColor; 10 | background-color: @weuiBtnPrimaryActiveBg; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 |{{name}}
9 | 10 |发行时间:{{date}}
11 |{{v}}
4 |Vue 音乐搜索、播放 Demo,资源来自QQ音乐
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
查看Demo:http://sioxas.github.io/,在手机上效果更好,扫一扫体验
15 | 16 | 17 | 18 | ### 实现的功能 19 | 1. 音乐播放、暂停、上一曲、下一曲 20 | 2. 播放列表、添加到播放列表、做为下一首播放 21 | 3. 搜索单曲、歌手、专辑、MV 22 | 4. 查看歌手页面、专辑页面、MV 23 | 5. 热门搜索 24 | 6. 搜索历史记录 25 | 7. 排行榜 26 | 8. 切换播放模式 27 | 9. 歌词 28 | 29 | ### 未实现的功能 30 | * 我喜欢 31 | * 下载 32 | 33 | ## Build Setup 34 | 35 | ``` bash 36 | # 下载或克隆下来,然后安装依赖 37 | npm install 38 | 39 | # 开发预览 40 | npm run dev 41 | 42 | # 打包发布,生成的文件在dist文件夹中 43 | npm run build 44 | ``` 45 | 46 | # 截图 47 | 48 | 49 | ### 推荐 50 |  51 | ### 排行榜 52 |  53 |  54 | ### 搜索 55 |  56 |  57 |  58 | ### 播放页面 59 |  60 | ### 专辑页面 61 |  62 | ### 歌手页面 63 |  64 |  65 | ### 播放列表 66 |  67 | -------------------------------------------------------------------------------- /src/components/Rank.vue: -------------------------------------------------------------------------------- 1 | 2 |{{item.topTitle}}
11 |12 | {{index+1}} 13 | {{song.songname}} 14 | -{{song.singername}} 15 |
16 |{{playModeName}} {{playList.length}}首歌曲
6 | 7 |{{item.name}}
13 | 14 |热门歌单
18 |{{item.dissname}}
32 | 33 |{{album.name}} 28 | -{{album.singername}} 29 |
30 |{{album.list.length}}首歌曲
31 |{{album.genre}} {{album.lan}}
32 |发行时间:{{album.aDate}}
33 |唱片公司:{{album.company}}
34 |{{song.songorig}}
42 | 46 |{{cd.visitnum | listenCount}}播放 来自:{{cd.nick}}
24 |简介
49 |{{cd.desc}}
52 |单曲
37 |{{item.name}}
40 | 41 | 44 |专辑
52 |{{item.name}}
57 | 58 |歌手
66 |{{item.name}}
71 |MV
79 |{{item.name}}
84 | 85 |