koa-generator:koa-生成器是一个npm。
1.打开cmd进入npm install -g koa-generator安装。
2.进入想要放项目的文件位置koa projectname。
使用上面的方法可以自动生成一个目录结构,为了一步一步讲解。我们手动生成,因为我们暂时不需要自动生成的结构中的一些文件夹。
控制器和路由
主要分两个部分,下面是设置好后的结构。
控制器
控制器用来对链接进行操作,这里没链接数据库举了一个例子。user.js文件
let db=[];
class UserRoute{
create(ctx){
db.push(ctx.request.body);
ctx.body=ctx.request.body;
}
update(ctx){
db[ctx.params.id]=ctx.request.body;
ctx.status=200;
}
deleteByid(ctx){
db.splice(+ctx.params.id,1);
ctx.status=204;
}
findByid(ctx){
if(+ctx.params.id>=db.length){
ctx.throw(412);
}
ctx.body = db[+ctx.params.id];
}
getAll(ctx){
ctx.body=db;
}
}
module.exports=new UserRoute();
这个文件处理用户的操作,可以看到CRUD。通过一个类中不同的方法实现操作,传入ctx参数得到数据。
路由
user.js的路由,包含进控制器的user.js。也很好理解。
const Router = require("koa-router");
const router = new Router({prefix: `/users`});
const {create,update,deleteByid,findByid,getAll}=require("../controllers/users.js");
router.get('/:id',findByid)
router.post(`/`,create)
router.put(`/:id`,update)
router.delete(`/:id`,deleteByid)
router.get('/',getAll);
module.exports=router;
如果我们有很多路由,将每个路由文件都添加到app.js中就太麻烦了,这里写一个自动化脚本帮我们导入。 index.js:
const fs = require("fs");
module.exports = (app) => {
fs.readdirSync(__dirname).forEach(file => {
if (file === "index.js")
return;
const route = require(`./${file}`);
app .use(route.routes()).use(route.allowedMethods());
})
}
app.js
在app.js中,集成我们需要的模块,注意模块之间是有顺序关系的,如果下一个模块使用了上一个模块,则排在后面。
"use strict"
const Koa = require("koa");
const bodyparser=require("koa-body-parser");
const routing=require('./routes/index.js');
const error=require("koa-json-error");
const app = new Koa();
app.use(error());//中间件加入有顺序
app.use(bodyparser());
routing(app);
app.listen(3000,()=>{console.log("成功启动")});