Koa:koa-route 和 koa-mount 有什么区别。我应该什么时候使用它们?

Koa : what is the difference between koa-route and koa-mount. When should I use each?

我正在尝试使用 Koa.js,并检查了以下用于路由请求的模块: 1.koa路线 2. koa-mount

当我在 google 中检查他们的 github page/tutorials 时,这些示例看起来几乎相似,只有细微差别。

  1. 对于 koa 路由:

    var route = require('koa-route');
    app.use(route.get('/', index));
    
    //functions to handle the request
    function* index(){
        this.body = "this should be home page!";
    }
    
  2. 对于koa-mount:

     //syntax to add the route
    var mount = require('koa-mount');
    var a = koa();
    app.use(mount('/hello', a));
    
    //functions to handle the request
    a.use(function *(next){
      yield next;
      this.body = 'Hello';
    });
    

在我看来唯一的区别是 mount 需要一个中间件来处理请求,而 route 需要一个生成器来处理请求。

我很困惑什么时候使用什么以及什么时候两者都使用(在一些教程中看到了)?

Koa-mount 的目的是将一个应用程序安装到另一个应用程序中。例如,您可以创建独立的博客应用程序并将其安装到另一个应用程序。您也可以安装其他人创建的应用程序。

koa-mount - 它会将不同的 koa 应用程序挂载到您给定的路线中。

const mount = require('koa-mount');
const Koa = require('koa');
// hello
const Hello = new Koa();

Hello.use(async function (ctx, next){
  await next();
  ctx.body = 'Hello';
});

// world

const World = new Koa();

World.use(async function (ctx, next){
  await next();
  ctx.body = 'World';
});

// app
const app = new Koa();

app.use(mount('/hello', Hello));
app.use(mount('/world', World));

app.listen(3000);

console.log('listening on port 3000');

上面的例子有三个不同的koa应用程序Hello,World和app。 app:3000/hello 路由挂载koa 应用Hello 和app:3000/world 路由挂载koa 应用World。 Hello 和 World 是 2 个不同的独立 koa 应用程序,它们已安装到 app 应用程序。

Koa-route 不适用于多个 koa 应用程序。它只会处理一个应用程序。所以你好和世界应该是应用程序中的 class/method。

    const route = require('koa-route');
    const Koa = require('koa');
    
    const Hello = async (ctx, next) => {
      await next();
      ctx.body = "Hello"
    }
    
    const World = async (ctx, next) => {
      await next();
      ctx.body = "World"
    }
    
    // app
    const app = new Koa();

    app.use(mount('/hello', Hello));
    app.use(mount('/world', World));

    app.listen(3000);

    console.log('listening on port 3000');

koa-route 可以处理中间件的另一件事,其中 koa-mount 用作中间件。