node.js

Koa的简易目录结构设计

koa-generator:koa-生成器是一个npm。

    1.打开cmd进入npm install -g koa-generator安装。

    2.进入想要放项目的文件位置koa projectname。

使用上面的方法可以自动生成一个目录结构,为了一步一步讲解。我们手动生成,因为我们暂时不需要自动生成的结构中的一些文件夹。

控制器和路由

主要分两个部分,下面是设置好后的结构。

image 19

控制器

控制器用来对链接进行操作,这里没链接数据库举了一个例子。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("成功启动")});