1插件安装
koa2
npm init -y 初始化项目
npm install Koa 轻量级服务器
nodemon 自动重启
npm install nodemon 文件更新自动重启
// package.json文件启动 指定指令 npm run dev
"scripts": {
"dev":"nodemon ./src/main.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
dotenv 环境配置
npm i dotenv 区分服务器环境 执行.env文件
.env文件
APP_PORT =3000
config.defualt.js文件
const dotenv = require('dotenv');
dotenv.config();
console.log(process.env.APP_PORT);
module.exports = process.env;
main.js文件导入
const {APP_PORT} = require('./config/config.defualt')
----
全局使用 process.env.APP_PORT
koa-router 路由
npm i koa-router //路由
main.js文件
const Koa = require("koa")
const router = require('./router/index.router')
const app = new Koa()
app.use(router.routes()) //使用router
index.router.js 动态加载路由文件
const Router = require('koa-router');
const path = require('path');
const fs = require('fs');
const router = new Router({prefix:'/api'});
// 动态加载路由文件
const routeFiles = fs.readdirSync(path.resolve(__dirname));
routeFiles.forEach((file) => {
console.log(file);
if (file !== 'index.router.js') {
const routeModule = require(`./${file}`);
router.use(routeModule.routes(), routeModule.allowedMethods());
}
});
module.exports = router;
user.router.js
const Router = require('koa-router')
router = new Router({prefix:'/user'}); //{prefix:'/user'} 加前缀
router.get('/',(ctx,next) => {
ctx.body = "user hello I Am koa-router"
});
module.exports = router;
koa-body 请求数据的解析
npm i koa-body
sequelize ORM数据库工具 和 mysql2
npm install --save sequelize mysql2
seq.js
const { Sequelize } = require('sequelize');
const {
MYSQL_HOST,
MYSQL_PORT,
MYSQL_USER,
MYSQL_WP ,
MYSQL_DB,
} = require('./../config/config.defualt')
// Option 3: Passing parameters separately (other dialects)
const sequelize = new Sequelize(MYSQL_DB, MYSQL_USER, MYSQL_WP, {
host: MYSQL_HOST,
dialect: 'mysql'
});
try {
sequelize.authenticate();
console.log('成功链接数据库');
} catch (error) {
console.error('数据库链接失败:', error);
}
module.exports = sequelize
user.model.js 表
const {DataTypes} = require('sequelize');
const seq = require('./../db/seq');
//定义模型对向
const User = seq.define("User",{
// ID会被自动创建
user_name:{
type:DataTypes.STRING,
allowNull:false,
unique:true,
comment:"用户名,唯一"
},
password:{
type:DataTypes.CHAR(64),
allowNull:false,
comment:"密码"
},
is_admin:{
type:DataTypes.BOOLEAN,
allowNull:false,
defaultValue:0,
comment:"是否是管理员:0不是 1是"
}
})
User.sync({
force:true //强制删除 重新创建
})
module.exports = User