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

news/2024/5/9 19:24:52/文章来源:https://blog.csdn.net/nqxcwl/article/details/102875050

上一篇文章中说到这一篇博客会实现音乐播放功能,只是令我意外的是,如果利用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(),该方法可以发送任意类型的数据。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_807029.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费建站系统 Joomla 3.9.5 发布

开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> Joomla 3.9.5现已推出。这是针对3.x系列Joomla的安全修复程序版本,它解决了三个安全漏洞,包含20多个错误修复和改进。 什么是3.9.5? Joomla 3.9…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

网站优化--让你的网页飞起来

摘要: 网站快要上线了,但是网站打开速度很慢怎么办?这里介绍一下对网页进行优化的方法和技巧,加快网页浏览速度,让网页速度飞起来 测试网页性能工具 ⑴Page Speed: 是开源 Firefox/Firebug 插件。网站管理员…

网站优化--让你的网页飞起来

摘要: 网站快要上线了,但是网站打开速度很慢怎么办?这里介绍一下对网页进行优化的方法和技巧,加快网页浏览速度,让网页速度飞起来 测试网页性能工具 ⑴Page Speed: 是开源 Firefox/Firebug 插件。网站管理员…

让网站飞起来02--服务器缓存

前提提要: 第一个介绍的是《让网站飞起来01---浏览器缓存技术》 介绍服务器,肯定要先支持服务器在网站架构中的位置和作用,然后在介绍几种常见的服务器缓存配置。 正文 对服务器在网站中位置作用有个大概了解:lamp架构图 上图主要…

Digital Ocean 搭建属于自己的网站

首先,需要Digital Ocean账号申请以及环境搭建的参考博客:https://blog.csdn.net/hunzhangzui9837/article/details/85209245 下面,开始Digital Ocean 网站搭建 1、WDCP的安装和管理 WDCP相当于一个服务器管理界面,可以直接在we…

Mozilla出了个网站安全评估工具 93%的网站居然都不合格

2019独角兽企业重金招聘Python工程师标准>>> Mozilla的安全工程师April King发现,世界上绝大多数的网站 - 高达93.45% - 并没有实施许多现代安全技术,为用户提供安全的连接,并保护他们免受跨站点的攻击脚本&#xff08…

构架高性能WEB网站的几点知识

构架高性能WEB网站的几点知识 前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题。 HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.htm或者.html 1.纯静…

高性能建站之前端优化篇

高性能建站之前端优化篇 2011-10-25 17:50 by PHP淮北, 560 visits,收藏,编辑 前言: 这算是对前端优化的总结吧,之前零零星星总结和学习,这次做一个完整的总结。 测试网页性能工具 ⑴Page Speed: 谷歌开发的工具,网…

8个应该去逛逛JQuery的学习网站

根据国外科技网站 W3Techs 一项调查了近100万个网站数据显示,jQuery是目前最流行的 JavaScript 库。对于初学者来说,有的时候很难找到一个好的学习jQuery的网站,所以本文收集了8个很棒的 jQuery 学习网站推荐给大家。 1. Learning jQuery 最…

Hexo博客yilia主题使用cnzz统计网站访问量

使用友盟第三方的统计插件,网址:http://www.umeng.com/ 进入网站先注册账号然后根据下列图片进入添加站点。 添加站点,自己搭建的博客,需要统计访问量的网站(这里加入我的博客网站),然后点击统计代码进入代码页 代码页…

网站刷关键词_关键词快速排名靠谱吗?应该如何判断

企业要想在竞争激烈的市场中,赢得更多用户的关注,如果没有把网站的排名优化到显眼的地方,是很难实现变现的。如果想提升网站的排名,通过不断优化网站关键词而实现的。企业想快速实现关键词排名,于是网络上就出现很多“…

Linux系列-Red Hat5平台下的LAMP网站服务搭建(一

Linux系列-Red Hat5平台下的LAMP网站服务搭建(一) 编译安装Apache服务器&httpd服务的基本配置 LAMP架构是目前最为成熟的一种企业网站应用模式,指的是协同工作的一整套系统和相关软件,能够…

蝉知网站模板常用的Jquery

1.因为蝉知调用到ZUI的缘故&#xff0c;所有class类名会比较多&#xff0c;有时候方便操作样式&#xff0c;常用到去除类名&#xff1a; <p class"chanzhi">Its a wonderful website.</p> 如果class有样式设计复杂影响设计&#xff0c;则可以去除class类…

仿站和模板建站的区别_建站方式多种,哪个比较适合?

网站制作一年350元&#xff0c;五站合一&#xff0c;快速建站 &#xff0c;www.sxjcwzjs.com,只需进入网站右上角注册快速建站即可(需要电脑登录注册)&#xff0c;需要联系我吧&#xff01;电话&#xff1a;13752214574&#xff0c;微信号&#xff1a;m1078582894做网站一般分为…

mobi格式电子书_几个超赞的免费电子书下载网站(支持kindle)

作者 / 青柠学术来源 / 公众号(青柠学术)全文共1312字&#xff0c;推荐阅读时间4分钟。现在有很多电子书阅读爱好者&#xff0c;下面分享给大家一些电子书的下载网站&#xff0c;相信你会在这些网站找到你想要看的电子书、以及你想要的格式的电子书&#xff01;--壹--书语者书语…

mixamo网站_使用mixamo动捕数据在blender中实现写实动画

Mixamo是adobe旗下的一个基于web的在线3D人物动画制作平台&#xff0c;最重要的是它提供了丰富、免费的动作捕捉数据供下载。下面介绍如何将动捕数据下载并导入blender制作动画。1.mixamo动捕数据下载。网站地址&#xff1a;https://www.mixamo.com首先完成注册&#xff0c;只有…

免费音乐素材网站推荐 视频剪辑自媒体运营必备

各位各位各位&#xff01;各位宝贝&#xff01;今天俺又来跟大家推荐宝藏音乐素材网站了&#xff01;不管是日常剪辑还是自媒体运营我们都会用到一些BGM&#xff0c;但是有很多网站是收费的&#xff0c;又或者免费但音乐十分难听&#xff0c;今天就来跟大家分享一波小V君私藏的…

自媒体运营、平面设计封面如何搭配?3大色彩搭配网站推荐

之前给大家分享了很多无版权的图片网站、音乐素材网站&#xff0c;但日常设计我们常常会遇到配色的问题&#xff0c;不管是设计作图、动效制作还是自媒体封面都需要用到配色&#xff0c;不同的色彩搭配也会出现不同的效果。今天就来跟大家分享一波神仙配色设计网站。 一、Cool…

图片压缩后模糊怎么办 这5款无损压缩网站你要知道

不少小伙伴一定有过过上传Gif动图提示动图体积过大的糟糕体验&#xff0c;同时还有MP4转Gif动图压缩率过高&#xff0c;导致图片模糊的看不清的体验。今天阿昊要推荐给大家的就是五款图片压缩&视频转换神器&#xff0c;无损&#xff01; 1.Aconvert&#xff08;全能王-视频…