[英]ES6 Koa.js run generator function to completion and return asynchronously
[英]Use Koa.js with ES6
我現在用Express編寫REST API。 我一直在閱讀Koa.js,這聽起來很有趣,但是我似乎無法弄清楚如何使用Koa.js編寫適當的ES6功能。 我正在嘗試制作結構化的應用程序,這就是我現在擁有的:
注意:我使用的是koa-route軟件包,
let koa = require('koa');
let route = require('koa-route');
let app = koa();
class Routes {
example() {
return function* () {
this.body = 'hello world';
}
}
}
class Server {
constructor(port) {
this.port = port;
}
addGetRequest(url, func) {
app.use(route.get('/', func());
}
listen() {
app.listen(this.port);
}
}
const port = 8008;
let routes = new Routes();
let server = new Server(port);
server.addGetRequest('/', routes.example);
server.listen();
它可以工作,但外觀和感覺笨拙。 有一個更好的方法嗎?
僅僅因為ES6具有類,並不意味着您絕對不能在無法使用它們的情況下使用它們 。 :)
這是我通常如何做的一個例子。 請不要以為這是一種方式,而不是這種方式。
// api/exampleApi.js
const controller = {
getExample: (ctx) => {
ctx.body = { message: 'Hello world' };
}
}
export default function (router) {
router.get('/example', controller.getExample);
}
// server.js
import Koa from 'koa';
import KoaRouter from 'koa-router';
import exampleApi from 'api/exampleApi';
const app = new Koa();
const router = new KoaRouter();
exampleApi(router);
app.use(router.routes());
app.listen(process.env.PORT || 3000);
請注意:此示例基於Koa 2和Koa Router 7。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.