koa2和结合装饰器decorator写路由

博客介绍了使用koa - router的步骤,包括下载带babel字样的插件、配置.babelrc、编写decorator.js和routes目录下的index.js等,这些步骤很多博客已有详细介绍。重点强调了use的使用,还提及server目录下的index.js、启动文件start.js及启动方式。

1.下载需要的插件--最好把下面带babel字样的全都下载了)

2.配置.babelrc

{
    "presets": [
        "env",
        "stage-0"
    ],
    "plugins": [
        "transform-decorators-legacy",
        "transform-runtime",
        "transform-class-properties"
    ]
} 

3.decorator.js

import KoaRouter from 'koa-router'
export function Request({url, method}) {
    return function (target, name, descriptor) {
        let fn = descriptor.value
        descriptor.value = (router) => {
            router[method](url, async(ctx, next) => {
                await fn(ctx, next)
            })
        }
    }
}

export const RequestMethod = {
    GET: 'get',
    POST: 'post',
    PUT: 'put',
    DELETE: 'delete'
}


export function Controller({prefix}) {
    let router = new KoaRouter()
    if (prefix) {
        router.prefix(prefix)
    }
    return function (target) {
        let reqList = Object.getOwnPropertyDescriptors(target.prototype)
        for (let v in reqList) {
            // 排除类的构造方法
            if (v !== 'constructor') {
                let fn = reqList[v].value
                fn(router)
            }
        }
        return router
    }
}

4.routes目录下的index.js

import {Controller, Request, RequestMethod} from '../decorator'

@Controller({prefix: '/hello'})
class HelloController{
    @Request({url: '/', method: RequestMethod.GET})
    async hello(ctx) {
        ctx.body = 'Hello World'
    }
}

module.exports = HelloController

以上几个步骤很多博客都写的挺详细,就不赘述了

 

重点是怎么use******

5.server目录下的index.js

var Koa = require('koa');
var app = new Koa();
var HelloController = require('./routes');

app
    .use(HelloController.routes())
    .use(HelloController.allowedMethods());

app.listen(3000)
console.log('app started at port 3000...');

6.启动文件start.js(该下的插件---上图有,请回看)

require('babel-core/register')()
require('babel-polyfill')
require('./server/index.js')

7.控制台打印 node start

 

文件树是这样的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值