Javascript 是否有一个用于KOA.JS的快速样式嵌套路由器?

Javascript 是否有一个用于KOA.JS的快速样式嵌套路由器?,javascript,node.js,express,url-routing,koa,Javascript,Node.js,Express,Url Routing,Koa,是否存在提供Express样式嵌套路由器的库?大概是这样的: var koa = require('koa'); var app = koa(); var Router = require('???'); var restApiRouter = Router(); restApiRouter.get('/', function*() { // respond to /api/ }); restApiRouter.get('/messages', function*() { // res

是否存在提供Express样式嵌套路由器的库?大概是这样的:

var koa = require('koa');
var app = koa();
var Router = require('???');

var restApiRouter = Router();
restApiRouter.get('/', function*() {
  // respond to /api/
});
restApiRouter.get('/messages', function*() {
  // respond to /api/messages
});

var appRouter = new Router();
appRouter.get('/', function*() {
  // respond to /
});
// redirects all /api/* requests to restApiRouter
appRouter.use('/api', restApiRouter);

app.use(appRouter);
如果没有,在其他文件中加入公共路径路由的最佳实践是什么?

我认为应该满足您的需要

var Router = require('koa-router');

var restApiRouter = new Router({
  prefix: '/api'
});

restApiRouter.get('/', ...); // responds to "/api"
restApiRouter.get('/messages', ...); // responds to "/api/messages"

var router = new Router();
router.get('/', ...); // responds to "/"

app
  .use(restApiRouter.routes())
  .use(router.routes())
  .use(restApiRouter.allowedMethods());
  .use(router.allowedMethods());

之前的答案并没有确切说明如何嵌套路由器。下面是一个实际示例,它被拆分为几个控制器文件

首先,我们将一些API路由定义到
controllers/API/foo.js
文件中:

var router = require('koa-router')();

router.get('/', function* () {
    // Return a list of foos
});

router.get('/:id', function* () {
    // Return a specific foo
});

module.exports = router;
然后,在您的应用程序路由器上,您可以像下面那样将其嵌入到文件
controllers/index.js

var router = require('koa-router')();

// Create a new route
router.get('/', function* () {
    this.body = 'Home page';
});

// Nest previous API route
router.get('/api/foo', require('./api/foo').routes());

module.exports = router;
var koa = require('koa');
var app = koa();
app.use(require('./controllers').routes());
app.listen(process.env.PORT || 3000);
最后,只需在应用程序中使用路由器
index.js

var router = require('koa-router')();

// Create a new route
router.get('/', function* () {
    this.body = 'Home page';
});

// Nest previous API route
router.get('/api/foo', require('./api/foo').routes());

module.exports = router;
var koa = require('koa');
var app = koa();
app.use(require('./controllers').routes());
app.listen(process.env.PORT || 3000);

嗯,也许并不像你想象的那样,但是,以我的经验,我做的就是这个工作

我现在没有任何经过测试的代码,但应该是这样的

main.js
var-app=require('koa')()
var端口=8080
var http=require('http')
var server=http.createServer(app.callback())
//导入主路由器
var mainRouter=require(“/app/routes/root”)
//并使用其路线和方法
app.use(mainRouter.routes())
app.use(mainRouter.allowedMethods())
侦听(端口,函数(){
console.log('在端口%d上侦听,应用程序就绪',端口)
})

是否可以将我的路由放在一个单独的文件中?这完全不是一个正确的答案,本例中没有嵌套路由器