-
项目基础搭建
-
项目初始化
npm init -y
//安装koa
npm install koa
-
编写最基础的app
//main.js
const Koa = require('koa')
const app = new Koa()
app.use((ctx,next)=>{
ctx.body = 'hello world'
})
app.listen(3000,()=>{
console.log("server is running on http://localhost:3000");
})
-
测试
-
项目基本优化
-
自动重启服务
//安装nodemon工具(自动重启服务)
npm install nodemon
//package.json
"scripts": {
"dev" : "nodemon ./src/main.js",
"test": "echo "Error: no test specified" && exit 1"
},
//执行项目
npm run dev
-
读取配置文件
- 安装dotenv,读取根目录中的.env文件,将配置写process.env中
npm install dotenv
- 创建.env文件
APP_PORT=8000
- 创建src/config/config.default.js
const dotenv = require('dotenv')
dotenv.config()
// console.log(process.env.APP_PORT);
module.exports = process.env
- 改写main.js
const Koa = require('koa')
const {APP_PORT} = require("./config/config.default")
const app = new Koa()
app.use((ctx,next)=>{
ctx.body = 'hello world'
})
app.listen(3000,()=>{
console.log(`server is running on http://localhost:${{APP_PORT}}`);
})
-
添加路由
路由:根据不同url,调用对应处理函数
安装koa-router
npm i koa-router
- 步骤:
-
- 导入包
- 实例化对象
- 编写路由
- 注册中间件
-
编写路由
创建src/router目录,编写user.route.js
const Router = require('koa-router')
const router = new Router({prefix: '/users'})
// GET /users/
router.get('/',(ctx,next)=>{
ctx.body = "hello users"
})
module.exports = router
-
改写main.js
const Koa = require('koa')
const {APP_PORT} = require("./config/config.default")
const app = new Koa()
const userRouter = require('./router/user.route')
app.use(userRouter.routes())
app.use((ctx,next)=>{
ctx.body = 'hello world'
})
app.listen(APP_PORT,()=>{
console.log(`server is running on http://localhost:${APP_PORT}`);
})
-
目录结构优化
-
将http服务和app业务拆分
创建src/app/index.js
const Koa = require('koa')
const app = new Koa()
const userRouter = require('../router/user.route')
app.use(userRouter.routes())
app.use((ctx,next)=>{
ctx.body = 'hello world'
})
module.exports = app
改写main.js
const {APP_PORT} = require("./config/config.default")
const app = require('./app')
app.listen(APP_PORT,()=>{
console.log(`server is running on http://localhost:${APP_PORT}`);
})
-
将路由和控制器拆分
路由:解析URL,分布给控制器对应的方法
控制器:处理不同的业务
改写user.route.js
const Router = require('koa-router')
const router = new Router({prefix: '/users'})
const {register} = require('../controller/user.controller')
const {login} = require('../controller/user.controller')
//注册接口
router.post('/register',register)
//登录接口
router.post('/login',login)
module.exports = router
创建controller/user.controller.js
class UserController {
async register(ctx,next) {
ctx.body = "用户注册成功"
}
async login(ctx,next) {
ctx.body = "用户登录成功"
}
}
module.exports = new UserController