上一篇文章中说到这一篇博客会实现音乐播放功能,只是令我意外的是,如果利用h5的audio标签,几行代码就实现了......先来看一下最终效果吧。

这里直接用了audio标签,样式没有怎么管,能获得音乐文件并且播放就足够了。

所以后面我利用了两天的时间,在看了一遍vue官方文档,然后看了vue-router + vue-resource,再学习了mongodb和mongoose,安装了Mongodb数据库,下载了mongo可视化工具robomongo并且学习使用,最后要实现的效果就是利用node.js的express模块以及mongoose模块,实现从mongodb数据库存储读取数据,并且发送到前台页面刷新。

所有工具的下载链接:

mongodb数据库:https://www.mongodb.com/download-center?jmp=nav#community(各种系统下的安装包都有)

robomongo:https://robomongo.org/download

关于mongodb和robomongo的使用教程,网上也有很多,这里贴出我个人参考的两篇:

mongodb:https://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html(这篇文章比较好的地方是把mongodb设置为一个windows服务了,这样就不用每次都打开命令行然后启动mongodb服务,只需要设置服务自动开启就好了)

robomongo:https://jingyan.baidu.com/article/9113f81b011ee72b3214c78d.html(其实robomongo的教程没有什么特别之处,关键还是在于自己要先学习Mongodb是什么东西,在本地创建了mongodb数据库之后才能使用可视化工具)

接下来就是修改项目部分了,最后实现效果跟以前一样,

MainPage.vue最终效果:

PlayMusic.vue最终效果:

其实效果跟以前是一样的,只是以前是直接require(json)文件,现在是利用mongoose从数据库中获取数据。下面是实现的过程:

1、在mongodb中创建新数据库"vue",在vue数据库中创建新collection:"musicData",把之前json文件的数据存储进去,效果如下:

2、修改build/dev-server.js文件,实现代码如下:

// 不使用mongoose的情况下,直接请求json文件
//const appData = require("../musicData.json")// 使用mongoose,从mongodb数据库中读取数据
const mongoose = require("mongoose")
// 创建数据库连接,链接vue数据库
const vuedb = mongoose.connect("mongodb://localhost:27017/vue")// 定义一个schema,描述集合中有哪些字段以及字段的类型,链接了"musicData"集合
const musicDataSchema = new mongoose.Schema({name: {type: String},singer: {type: String},musicPath: {type: String},coverPath: {type: String},lyric: {type: String}
}, {collection: "musicData"
})// 创建模型,用来操作数据库中的musicData集合,
// 第一个参数是model的名称,可以任意设置,第三个参数是collection名称(如果在schema设置了collection则省略)
const musicDataModel = vuedb.model("musicDataModel", musicDataSchema, "musicData")// 查找集合中的数据
musicDataModel.find({}, function(error, data) {var MainPageMusic = []MainPageMusic = requestMusic(data, 8) //主页面请求热门歌曲const apiRoutes = express.Router()apiRoutes.get('/musicData', function(req, res) {res.send({errno: 0,data: MainPageMusic})})app.use('/api', apiRoutes)console.log("函数内部" + MainPageMusic)
})
//  参数
//  data:需要处理的数组
//  count: 希望生成数组的元素个数
function requestMusic(arr, count) {var newArr = []var arrCopy = arr.concat()var length = arr.lengthfor(var i = 0;; i++) {var randomNum = parseInt(Math.random() * (length))if(arrCopy[randomNum] != undefined) {newArr[i] = arrCopy[randomNum]arrCopy[randomNum] = undefined} else {i--}if(newArr[count - 1] != undefined) {break}}return newArr
}

主要实现的步骤:

把从json文件直接请求数据的语句去掉:"const appData = require("../musicData.json")";

引入mongoose模块:“const mongoose = require("mongoose")”;

创建数据库连接:“const vuedb = mongoose.connect("mongodb://localhost:27017/vue")”(这里可以不需要返回值,返回值主要是为了用于判断是否连接成功);

然后创建一个Schema:“const musicDataSchema = new mongoose.Schema({......})”schema作用在于用来描述集合中有哪些字段及其类型,对数据库没有操作能力,只是为了后面创建model提供模板。这里要注意最后的{collection:"musicData"},这是指定使用vue数据库中哪个集合(也就是通常意义上的数据库的表)的第一种方法。

创建一个model:"const musicDataModel = vuedb.model("musicDataModel", musicDataSchema, "musicData")",model拥有对数据库增删查改的能力,注意这里最后的参数"musicData",这是指定使用vue数据库中哪个集合的第二种方法。

如果上述两种方法都不使用的话,mongoose会默认根据model()方法的第一个参数使用集合,如上面的model()将会使用集合“musicdatamodels”(这里所有字母都会变成小写,并且在名称最后添加一个's'),如果找不到的话将会在数据库新建一个集合并使用。

接着就是对数据库的操作了,这里只使用了.find()方法查找数据,find()第二个参数是一个回调函数,函数有两个参数,“error“和”data“,第一个是出错信息,第二个就是返回的数据。

最后在回调函数中处理一下然后把数据通过express.router转发,转发方法改为res.send(),该方法可以发送任意类型的数据。

其余页面的代码还是没有改变,最后成功把数据从数据库读取发送到页面。后面将要实现的功能是提供用户注册登录以及登陆之后的其余操作,收藏、评论音乐,打开我的音乐,添加朋友等等。

转载于:https://www.cnblogs.com/oujiamin/p/7762176.html

从零开始利用vue-cli搭建简单音乐网站(四)相关推荐

  1. Vue + Element + animate.css 音乐网站(网易云版)

    Vue + Element + animate.css 音乐网站 一.前言 这是小弟的毕业设计,也是第一次用vue框架独立开发网站,现在接入了网易云api,到后面我还会做对应的后端和管理端.因为是第一 ...

  2. Re:从零开始的Vue项目搭建

    Re:从零开始的Vue项目搭建 初始的终结与结束的开始 Nodejs项目的简单测试 从零开始 webpack开发模式 webpack编译打包 后记 初始的终结与结束的开始 最开始接触vue项目搭建是从 ...

  3. vue = 什么意思_记录使用@vue/cli搭建Vue3项目完整流程

    最近发现vue两大UI框架Element UI和Ant Design Vue都已经支持Vue3了,如果再不学习Vue3就落伍了,此文章记录下使用@vue/cli搭建Vue3项目完整流程. 1 安装vu ...

  4. cli vue 卸载_记录使用@vue/cli搭建Vue3项目完整流程

    最近发现vue两大UI框架Element UI和Ant Design Vue都已经支持Vue3了,如果再不学习Vue3就落伍了,此文章记录下使用@vue/cli搭建Vue3项目完整流程. 1 安装vu ...

  5. java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计vue开发一个简单音乐播放器源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  6. java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue开发一个简单音乐播放器MyBatis+系统+LW文档+源码+调试部署 本源 ...

  7. JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计vue开发一个简单音乐播放器计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目 ...

  8. java计算机毕业设计vue开发一个简单音乐播放器(附源码、数据库)

    java计算机毕业设计vue开发一个简单音乐播放器(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  9. Unreal Engin_画廊制作笔记_001<设计草图,利用BSP快速搭建简单场景>

    001设计草图,利用BSP快速搭建简单场景 本笔记开始记录所学的知识点以及细节操作等,分享下自己学习UE4的经验,也为了巩固知识,便于复习. 接下来我会以模块化的方式,根据步骤来分享学习制作的经验,如 ...

最新文章

  1. linux sqlserver_SQLServer和Oracle数据库相比谁更强?
  2. MATLAB R2021a v9.10 for win 最新无限制中英文完美版 数据处理软件
  3. mysql周报内容范文_Mysql各种表格查询含实例,日报,周报,月报,时间差自动计算...
  4. android加法服务类,iOS越来越像Android:苹果简单做加法远离精致
  5. Oreo易支付程序开源源码分享发行版V1.3
  6. 重读经典:完全解析特征学习大杀器 ResNet
  7. Docker使用Dockerfile构建镜像
  8. SpringMVC后台数据校验
  9. 影响搜索引擎收录网站内容的四大原因分析
  10. setinterval 和 ajax,JavaScriptsetInterval和“this”解决方案
  11. 控制台 钢铁雄心2_钢铁雄心4控制台 (2)
  12. 研究生预备军:论文选题与写作
  13. Ubuntu 搭建 STM32 开发环境
  14. 技术栈(technology stack)
  15. sublime text 批量删除空白行
  16. Spring实战学习笔记整理(4)-AOP(面向切面编程)
  17. 【Kubernetes】Pod学习(五)从Pod到容器:Downward API
  18. Nvidia GeForce GTX 1650不支持OpenGL4.6
  19. mysql java配置文件_Mysql配置文件参数优化
  20. 【讲清楚,说明白!】Zabbix企业级自动化监控与无人报警系统--实战演练

热门文章

  1. windows进程中的内存结构(转)
  2. SEO基础问题:14.给图片添加alt标签的知识点
  3. as5.4安装gcc和g++
  4. 使用tensorflow object detection API 训练自己的目标检测模型 (三)
  5. import torch 找不到模块_Python零基础入门:关于Python模块与包的详细解读和使用...
  6. 开奖及送书|《漫画算法:小灰的算法之旅(Python篇)》
  7. 可解释性系列论文:Mathematics of Deep Learning
  8. python 去除读取txt输出时候的换行号
  9. ClassLoader背景知识
  10. IOHK与World Mobile合作以在坦桑尼亚建立新移动网络