1.第一步npm init-y 初始化项目然后引入koa
下列代码应等第二部后全部搞完再配置上去
// 安装koa
cnpm i -S koa
const Koa = require('koa')
const config = require('./config')
const app = new Koa()
//路由
const router = require('./routes')
app.use(router.routes())
//监听端口
app.listen(config.port, () => {
console.log(`app is started at port: ${config.port}...`)
})
2.首先建立config.js作为mysql的配置文件
// mysql设置
const Config = {
port: 3000,
mysql: {
host: "127.0.0.1",
// mysql端口
port: 3306,
// mysql用户名
user: "root",
// 数据库名
database: 'my_data',
// mysql密码
password: 'gold28901645',
// 编码类型
char: 'utf8mb4'
}
}
module.exports = Config
3.新建mysql.js
// 安装mysql包
cnpm i -S mysql
// 获取基础配置
const configs = require('./config')
const mysql = require('mysql').createConnection({
host: configs.mysql.host,
port: configs.mysql.port,
user: configs.mysql.user,
password: configs.mysql.password,
database: configs.mysql.database
});
// 封装执行sql脚本对数据库进行读写
const query = (sql) => {
return new Promise((resolve, reject) => {
if (!sql) {
reject()
}
mysql.query(sql, (err, rows, fields) => {
if (err) {
reject(err)
}
resolve(rows, fields)
})
})
}
module.exports = { mysql: query }
4.新建controllers目录 和 index.js文件
// controllers/index.js
// 获取文件绝对路径的方法
const _ = require('lodash')
const fs = require('fs')
const path = require('path')
// 映射某文件夹下的文件为模块
const mapDir = d => {
const tree = {}
// 获取当前文件夹下的所有文件夹和文件,分成两组,文件夹一组,文件一组
// partition : 划分文件和文件夹的方法
// statSync : stat数组
// isDirectory:判断当前文件类型是否为文件夹类型
const [dirs, files] = _(fs.readdirSync(d)).partition(p => fs.statSync(path.join(d, p)).isDirectory())
// 映射文件夹
dirs.forEach(dir => {
tree[dir] = mapDir(path.join(d, dir))
})
// 映射文件
files.forEach(file => {
// extname : 获取文件后缀名
if (path.extname(file) === '.js') {
// basename : 获取后缀为.js的文件名
tree[path.basename(file, '.js')] = require(path.join(d, file))
}
})
return tree
}
// 默认导出当前文件夹下的映射
module.exports = mapDir(path.join(__dirname))
5.新建routes文件夹和在routes文件夹下新建index.js
//安装koa-router中间件
cnpm i -S koa-router
const router = require('koa-router')({
// 路由前缀
prefix: "/api/v1"
})
const controllers = require('../controllers/index')
// 这里面写路由的控制器
// 看第六步
// router.get('/getUsers', controllers.home.getUsers)
// router.post('/login',controllers.home.login)
module.exports = router
6.在controllers目录下建立自己需要的模块文件夹
这里用users模块为例
// 引入封装好的mysql
const { mysql } = require('../../mysql')
module.exports = async (ctx) => {
const users = await mysql('select * from y_users where id = 1');
ctx.body = {
'users': users
}
}
然后跳回第5步
// 解除注释
router.get('/getUsers', controllers.home.getUsers)
这里为什么可以这么写,因为第4步的方法就是将controllers目录下的文件夹中的为.js文件的全部自动引入
7. 输入带 地址:端口/后缀/接口 就可以得到数据