一、初始化Koa2框架
1.運用腳手架初始化Koa2框架
npm install -g koa-generator -g //全局安裝koa-generator命令
2.使用koa-generator生成koa2項目
koa2 project(項目名稱)
3.項目初始化
cd project(項目名稱)
npm install
自此,我們的項目就成了下面這個亞子
Koa2初始化后的亞子
我們需要對其改造成我們想要的樣子,和express框架一樣
config 配置文件
controllers 項目控制器存放目錄:接受請求,處理邏輯
dbhelper 數據庫CRUD操作的封裝
log 日志文件
同時把public文件夾和routes文件夾以及views文件夾刪掉,因為是純前后臺分離項目,所以在app.js里面也將相關內容刪掉。
改造好的亞子
二、在koa2框架中導入MySQL數據庫
MySQL數據庫的安裝和配置我就不說了
https://www.cnblogs.com/xch-yang/p/7661069.html
在config文件夾里新建Database.js文件同時將它暴露出來( 使用連接池增加效率)
const mysql = require("mysql");
let config = mysql.createPool({
host: "127.0.0.1", // 數據庫的地址
user: "root", // 數據庫用戶名
password: "root", // 數據庫密碼
port: "3306", // mysql數據庫的端口號
database: "personal_blog" // 使用那個數據庫
})
// 這里也可以像mongodb一樣寫返回參數,各種連接不成功的
console.log("數據庫連接成功");
config.on('release', function (connection) {
console.log('Connection %d released', connection.threadId);
});
module.exports = config;
在dbhelper文件夾里新建db.js文件作為封裝數據庫操作代碼
以下是我用Promise封裝的一些關于MySQL數據庫增刪改查的一些常用操作,關于SQL語句更多的操作網上有很多,直接替換就好,這兒不多說
const config = require('../config/Database');
// sql查詢表中數據總條:SELECT COUNT(*) FROM 表名稱。
// 返回大于 20 歲的人數:
// SELECT COUNT(*) AS count FROM Personsinfo WHERE Age>20
// 增
exports.add = function (addSqlParams) {
let addSql = 'INSERT INTO user(user_name,user_cloudId,user_qqNumber) VALUES(?,?,?)';
return new Promise(function (resolve, reject) {
config.query(addSql, addSqlParams, function (err, result) {
resolve(result);
if (err) {
console.log(err);
reject(err.message);
}
console.log('INSERT ID:', result);
});
});
}
// 刪
exports.delete = function (conditions) {
let delSql = 'DELETE FROM ychat_user where ' + conditions;
return new Promise(function (resolve, reject) {
config.query(delSql, function (err, result) {
resolve(result);
if (err) {
reject(err.message);
}
console.log('DELETE affectedRows', result.affectedRows);
});
});
}
// 改
exports.set = function (data, conditions) {
let modSql = 'UPDATE ychat_user SET ' + data + ' WHERE ' + conditions;
return new Promise(function (resolve, reject) {
config.query(modSql, function (err, result) {
resolve(result);
if (err) {
console.log(err);
reject(err.message);
}
console.log('UPDATE affectedRows', result.affectedRows);
});
});
}
// 查
exports.select = function (parmas) {
let sql = 'select * from ychat_user where ' + "user_id=" + "'" + parmas + "'" + " or " + "mobile=" + "'" + parmas + "'";
return new Promise(function (resolve, reject) {
config.query(sql, function (err, result) {
resolve(result);
if (err) {
reject(err.message);
}
});
});
}
在controllers文件夾里新建control.js文件作為封裝邏輯操作代碼
下面是我關于邏輯操作的一些代碼
const DB = require("../dbhelper/db.js");
exports.doLogin = async (ctx, next) => {
let code = ctx.request.body.code;
let addparams = ['adwsd', 3, 2]
let result = DB.add(addparams);
console.log(result)
ctx.response.body = {
list: '',
state: '測試成功',
code: '0'
}
}
在主文件目錄下新建router.js文件當作路由中間件,這樣我們可以將接口看的更加直觀
/**
* 前端路由表
*/
const router = require('koa-router')()
const control= require('./controllers/control.js');
const high = require('./controllers/High')
router.get('/doLogin', control.doLogin);
// 測試高并發(fā)接口·
router.get('/high', high.high);
module.exports = router.routes();
同時在app.js的最后插入
let route = require('./router')
app.use(route);
作為中間件