【音乐App】—— Vue-music 项目学习笔记:项目准备
前言: 学习慕课网Vue高级实战课程后,在实践中总结一些这个项目带给自己的收获,希望可以再次巩固关于Vue开发的知识。这一篇主要梳理:项目概况、项目准备、页面骨架搭建。项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star。
| 一、项目概况 |
项目目标: 开发一个媲美原生的移动端音乐App
![]() |
![]() |
| 主页面 | 用户个人中心 |
![]() |
![]() |
| 播放器 | 播放列表 |
前端技术栈:
- Vue:用于构建用户界面的 MVVM 框架。它的核心是响应的数据绑定和组系统件
- vue-router:为单页面应用提供的路由系统,项目上线前使用了 Lazy Loading Routes 技术来实现异步加载优化性能
- vuex:Vue 集中状态管理,在多个组件共享某些状态时非常便捷
- vue-lazyload:第三方图片懒加载库,优化页面加载速度
- better-scroll:iscroll 的优化版,使移动端滑动体验更加流畅
- stylus:css 预编译处理器
- ES6:ECMAScript 新一代语法,模块化、解构赋值、Promise、Class 等方法非常好用
后端技术栈:
- Node.js:利用 Express 起一个本地测试服务器
- jsonp:服务端通讯。抓取 QQ音乐(移动端)数据
- axios:服务端通讯。结合 Node.js 代理后端请求,抓取 QQ音乐(PC端)数据
自动化构建及其他工具:
- webpack:项目的编译打包
- vue-cli:Vue 脚手架工具,快速搭建项目
- eslint:代码风格检查工具,规范代码格式
- vConsole:移动端调试工具,在移动端输出日志
业务层与支撑层:
![]() |
![]() |
| 二、项目准备 |
vue-cli安装
(sudo) npm install -g vue-cli // sudo:mac环境下有关管理权限的命令
vue init webpack vue-music
项目目录介绍及图标字体、公共样式等资源准备
- api目录 : 和后端请求相关的代码,包括ajax和jsonp的请求
- common目录 : fonts/image/js/stylus
- components目录 : 业务组件
- base目录 : 基础组件
- router目录 : 路由相关文件
- store目录 : 存放vuex相关的代码
样式文件
- base.styl : 一些基础的样式,并且引用variable.styl
- variable.styl : 颜色定义规范、字体定义规范(组件要使用时引用)
- icon.styl : 制作字体文件后要使用的样式
- reset.styl : 重置样式
- mixin.styl : 定义一些样式函数(组件要使用时引用)
- index.styl : 引入 reset/base/icon.styl
安装stylus stylus-loader
npm install stylus stylus-loader --save
main.js入口文件中引入
import './common/stylus/index.styl'
| 三、页面骨架开发 |
页面入口+header组件编写
- index.html 添加<meta>标签 : 移动端常见的基本设置
<meta name="viewport"
content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"> 安装依赖:
//babel-runtime —— 对es6语法做一些转义
//fastclick —— 解决移动端点击延迟300ms的问题
//babel-polyfill —— 【补丁】 对es6中promise等API的转义
npm install babel-runtime fastclick babel-polyfill --save- 在 main.js 中引入:
//babel-polyfill 一定要写在最前面
import ‘babel-polyfill’
import fastclick from 'fastclick' //fastclick推荐用法:使document.body下面所有的点击都没有300ms的延迟
fastclick.attach(document.body) - 删掉 Helloword.vue , 修改router->index.js 中的配置,删掉 Helloword 相关
- 创建 m-header.vue 组件,坑:<style>中不能使用@代表src目录,会报错,还是使用../
- 在 App.vue 中删掉Logo,修改样式,引入variable.styl,注册MHeader组件
路由配置+顶部导航栏组件开发
- 4个路由,对应要创建4个组件:
- rank(排行页面)
- recommend(推荐页面)
- search(搜索页面)
- singer(歌手页面)
- 在router->index.js中引入,并配置路由routes:
import Recommend from '@/components/recommend/recommend'
import Singer from '@/components/singer/singer'
import Rank from '@/components/rank/rank'
import Search from '@/components/search/search' routes: [
{
path: '/',
redirect: '/recommend' //默认页面重定向到recommend路由中
},
{
path: '/recommend',
component: Recommend
},
{
path: '/rank',
component: Rank
},
{
path: '/search',
component: Search
},
{
path: '/singer',
component: Singer
}
] - App.vue 中使用<router-view></router-view>
- 创建 tab.vue 导航栏组件,通过<router-link>切换路由
<router-link tag="div" class="tab-item" to="/recommend">
<span class="tab-link">推荐</span>
</router-link>
<router-link tag="div" class="tab-item" to="/singer">
<span class="tab-link">歌手</span>
</router-link>
<router-link tag="div" class="tab-item" to="/rank">
<span class="tab-link">排行</span>
</router-link>
<router-link tag="div" class="tab-item" to="/search">
<span class="tab-link">搜索</span>
</router-link> - 设置点击高亮样式:&.router-link-active
- App.vue 中引入并注册tab.vue,使用<tab></tab>
注:项目来自慕课网
【音乐App】—— Vue-music 项目学习笔记:项目准备的更多相关文章
- 最新 Vue 源码学习笔记
最新 Vue 源码学习笔记 v2.x.x & v3.x.x 框架架构 核心算法 设计模式 编码风格 项目结构 为什么出现 解决了什么问题 有哪些应用场景 v2.x.x & v3.x.x ...
- Spring Boot 项目学习 (一) 项目搭建
0 引言 本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程. 1 系列文档目录 Spring Boot 项目学习 (一) 项目搭建 Spring Boot 项目学习 ...
- 【音乐App】—— Vue-music 项目学习笔记:推荐页面开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 上一篇总结了项目概述.项目准备.页面骨架搭建.这一篇重点梳理推荐页面开发.项目github地址:https://github.com/66We ...
- vue零基础学习--搭建项目
一.script引入(联系使用,小型项目) 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量. <script src="https://cdn.j ...
- java maven、springmvc、mybatis 搭建简单Web项目学习笔记
前言: 空余的时间,学学 Java,没准哪天用的到: 环境搭建折腾了好几天,总算搞顺了,也做个学习笔记,以防后面会忘记: 一.安装文件及介绍 JDK:jdk1.8.0 77 eclipse-maven ...
- 两万字Vue.js基础学习笔记
Vue.js学习笔记 目录 Vue.js学习笔记 ES6语法 1.不一样的变量声明:const和let 2.模板字符串 3.箭头函数(Arrow Functions) 4. 函数的参数默认值 5.Sp ...
- 两万字Vue.js基础学习笔记(二)
Vue.js学习笔记(二) 4.模块化开发 ES6模块化的导入和导出 我们使用export指令导出了模块对外提供的接口,下面我们就可以通过import命令来加载对应的这个模块了 首先,我们需要在HTM ...
- Vue基础知识学习笔记
一.环境搭建1.安装nodejs ((https://nodejs.org/en/)2.安装脚手架 npm install --global vue-cli /cnmp install --globa ...
- 【音乐App】—— Vue-music 项目学习笔记:歌单及排行榜开发
前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌单及详情页 排行榜及详情 ...
随机推荐
- VMSAv8-64 translation table format descriptors
通常情况下,一个 descriptor 可能是以下的几种 entry: 非法或者异常的 entry. Table entry, 指向 next-level translation table. Blo ...
- Python flask几个小问题
1.这句是个重定向,如果sse_id为空,定向到StudentScoreCenter()这个函数返回的uURL中(就是回到学生分数中心). 2.g是flask一个固定的用法,用来存登陆信息的,你可以简 ...
- 低水平选手的自我救赎 (1)CLRS Exercise 16.5-2
题目大意 给定正整数 $n$ 和一个由 $m$ 个正整数构成的可重集合 $A$,满足 $\forall a\in A, a\le n$ 且 $m\le n$ . 定义 $N_t(A) = |\{a\i ...
- BZOJ3524 [Poi2014]Couriers 【主席树】
题目 给一个长度为n的序列a.1≤a[i]≤n. m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2.如果存在,输出这个数,否则输出0. 输入格式 第一 ...
- Python基础教程笔记 第二章
本章的名字虽然叫列表和元组,但是本章讲的最多的是列表,元祖指讲了很少的一部分.因为元组和列表很多方面都是一样的. 列表和元组的区别:列表可以被修改,元祖不可以被修改. python包含的6种内建序列: ...
- vue的roter使用
1在src下建立router文件夹,再建立router.js import Vue from 'vue' import Router from 'vue-router' import home fro ...
- CentOS7安装Elasticsearch5.5.3
一.准备 安装Java环境,elasticsearch推荐安装java1.8.0_131或更高的版本,安装教程CentOS7安装JDK1.8 二.安装 CentOS下可以选择.tar.gz或rpm方式 ...
- Hibernate逆向工程生成代码
编辑此文章,其目的是方便以后根据表生成相应的代码,然而并非所有的代码都是如此.这里的Hibernate 即响应题目的ssh框架中的“h”. 如图所示,点击右上角,在myeclipse之中.再点击Mye ...
- SPOJ HIGH Highways
In some countries building highways takes a lot of time... Maybe that's because there are many possi ...
- 8个学习.net的博客链接 (以前收藏过更多的,被百度新版搞没了,恨死了)
原文发布时间为:2012-09-18 -- 来源于本人的百度文章 [由搬家工具导入] Simone Chiaretta’s CodeClimber http://www.haacked.com/ ( ...





