7 更良好的项目目录结构

1. 在上面的增删改查例子中, 我们将所有路由和控制器都写在了index.js中, 等到我们的代码量越来越大,这样显然是不合理的。所以, 我们应该构建良好的项目结构

 首先, 在根目录下创建app文件夹, 将index.js放入该目录下

 在app文件夹下, 创建控制器目录controllers、路由目录routes

 

 

 

 

2. 为了功能独立,路由只负责路由的事,中间件则负责功能和模块,我们需要将我们写的代码分离出来

 根据接口功能的不同, 我们将项目暂时划分为首页和用户

 

 

 

3. home模块

 controllers > home.js

class HomeCtl{
  index(ctx) {
    ctx.body='<h1>这是主页</h1>'
  }
}

module.exports = new HomeCtl()

  routes > home.js

const Router = require('koa-router')
const router = new Router()
const { index } = require('../controllers/home')

router.get('/', index)

module.exports = router

 

4. 用户模块

  controllers > users.js

const db = [
  {"name" : "zhanghao"}
]

class UserCtl{
  //获取用户列表
  find(ctx) {
    ctx.body = db
  }

  //增加用户
  create(ctx) {
    ctx.verifyParams({
      name: {type : 'string', required: true},
      age: {type: 'number', required: false}
    })
    db.push(ctx.request.body)
    ctx.body = ctx.request.body
  }

  //获取特定用户
  findById(ctx) {
    if(ctx.params.id * 1 < 0 ) {
      ctx.throw(404, '这个用户太小了, 找不到')
    }
    ctx.body = db[ctx.params.id * 1]
  }

  //修改用户
  update(ctx){
    db[ctx.params.id] = ctx.request.body
    ctx.body = ctx.request.body
  }

  //删除用户
  deleted(ctx) {
    db.splice(ctx.params.id, 1)
    ctx.status = 204
  }
}

module.exports = new UserCtl()

 routes > users

const Router = require('koa-router')
const router = new Router({prefix: '/users'})
const { find , findById, create, update, deleted } = require('../controllers/users')

router.get('/', find)

router.post('/', create)

router.get('/:id', findById)

router.delete('/:id', deleted)

router.put('/:id', update)

module.exports = router

 

 

 

posted @ 2019-10-20 23:08  改变就是好事哈  阅读(294)  评论(0编辑  收藏  举报