Node+TS+Koa+vue 商城全栈(六) koa-controllers

1.入口文件,引入 koa-controllers 模块

npm i -S koa-controllers

npm i -S reflect-metadata

app/index.ts

// import Koa from 'koa'; // 错误的写法
// import Koa = require('koa');
import * as Koa from 'koa';
import { useControllers } from 'koa-controllers';

let app = new Koa();

useControllers(app, __dirname + '/controllers/**/*.controller.js', {
  multipart: {
    dest: './uploads'
  }
})

app.listen(8000);

2.控制器

app/controllers/main.controller.ts

/**
 * 控制器是通过 class 来实现的
 * 但是并不是随便一个 class 他就能成为控制器
 * 类似继承的概念,koa-controllers 为我们提供了一个装饰器:Controller
 * 通过这个装饰器我们就可以把一个普通的类变成 具有 控制器特征的控制器类
 */
import { Controller, Get, Ctx, Post } from 'koa-controllers';
import { Context } from 'koa';

@Controller
class MainController {
  @Get('/')
  public async index(@Ctx ctx: Context) {
    /**
     * 我们希望用户在通过get方式访问 / 的时候执行该方法,我们就可以使用
     * Get,Post 装饰器来装饰该方法 
     */
    // console.log(ctx);
    ctx.body = 'hello';
  }

  @Post('/')
  public async indexPost(@Ctx ctx: Context) {
    ctx.body = 'hello post - zMouse';
  }
}

.

 

posted @ 2020-01-30 12:30  每天都要进步一点点  阅读(845)  评论(0编辑  收藏  举报