gpt4 book ai didi

node.js - 如何配置 koa-router 在任何一组路由之前运行通用代码?

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:17 24 4
gpt4 key购买 nike

我想向 /module 添加一些功能,这些功能将针对该目录下的任何匹配路由执行。

因此对于一组给定的路线:

/module/
/module/page
/module/things
/module/things/:thingid

我希望 /module 路由器中的代码能够为上述所有路由运行。 /module 不渲染,它只是获取一些常用数据并配置 View 上下文。然后其他路由之一运行并呈现页面。

这可以用 koa-router 实现吗?或者有更好的封装吗?

编辑:我想也许我必须做一个嵌套路由器并在嵌套之前添加中间件,如下所示:

var subRouter = new Router();
subRouter.get('/', function *(next){ doSomething(); });
subRouter.get('/page', function *(next){ doSomething(); });
subRouter.get('/things', function *(next){ doSomething(); });
subRouter.get('/things/thingid', function *(next){ doSomething(); });

mainRouter.use('/module',
function *(next) { doPreRouteSteps(); yield next; },
subRouter.routes()
);

似乎有效,但我不确定这是一个丑陋的黑客还是什么。如果有更好的方法,请指教。

最佳答案

您可以考虑使用koa-mount创建一个单独的应用程序,然后将其安装在 /module 下。子应用程序可以具有您想要的任何前置或后置中间件。

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

var subApp = koa();
var router = koaRouter();
router.get('/page', function *(next){ ... });
subApp.use(function*() { ...pre-route stuff... });
subApp.use(router.routes());

var mainApp = koa();
mainApp.use(mount('/module', subApp));

我喜欢这种方法,因为它鼓励模块化。

关于node.js - 如何配置 koa-router 在任何一组路由之前运行通用代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com