这个是全栈课的一个作业,要实现一个类似网易云音乐应用的项目。有这样一些基本功能:
- 实现注册、登录功能
- 上传音乐并且播放
我们先来实现最基本的功能:
- 用koa搭建项目框架
- 用art-template实现页面渲染
- 连接到数据库,并且能够获取数据库数据。
以下我们一步一步来实现。
搭建基本框架
1. 初始化项目
我的所有内容都放在my_music
文件夹下,在文件夹目录下初始化。
1 | npm init -y |
注意:这里有一个细节需要注意,项目文件夹的名字不能和后面我们需要用到的模块名重名,否则我们在下载模块的时候会被拒绝。我测试了一个小的例子(创建一个名叫koa的文件夹,并在文件夹里下载koa模块):
2. 下载相关模块
在搭建框架部分,我们会用到koa, koa-router, koa-art-template
三个模块。
1 | npm i koa koa-router koa-art-template -S |
3. 搭建框架
相关模块的应用我在之前的笔记里都记录过,这里直接上手。
1 | const Koa = require("koa"); |
我们先在views
文件夹中建一个测试用的index.html
页面:
1 |
|
然后在localhost:9000
测试一下基本功能:
连接数据库
我们需要利用mysql创建一个数据库,用来放置项目完成后上传的音乐文件。现在我们先将数据库连接起来。
下载模块
这里需要用到一个新的中间件mysql
1 | npm i mysql -S |
创建数据库
在navicat中创建一个名叫my_music
的数据库,并创建一个名叫user-table
的表,在表单里添加一个测试数据:
创建数据库连接
我们可以通过mysql
模块来创建数据库连接,为了尽量保持主文件中结构清晰,我们将功能性的模块放到一个modules
文件夹中,通过在主文件中引入功能模块的方式来操作。
官方文档首先提到,mysql
模块提供mysql.createConnection
方法来创建连接,但是与其挨个创建连接,还有一个更方便的方法叫做mysql.createPool(config)
,它采用的是创建多个连接,每个连接用完就放回池子里的方法。
整个流程是mysql.createPool(config)
创建连接池, pool.getConnection
连接池启动连接,connection.query
发起数据库请求,connection.release()
请求完毕后释放连接。
我们先明确数据库信息(config
),将它存在文件夹根目录下,防止路径过深,方便之后有调整的时候随时修改。
1 | //db_config.js |
接着我们来实现数据库的功能:
1 | // modules/db.js |
在主文件app.js
中我们来测试一下数据库查询功能:
1 | router.get('/', async (ctx) => { |
此时页面渲染结果:
终端输出结果: