Api 如何在express中手动注册基于分类的路线

Api 如何在express中手动注册基于分类的路线,api,express,class,ecmascript-6,routes,Api,Express,Class,Ecmascript 6,Routes,我正在使用express构建一个框架应用程序,并尝试将我的端点作为类编写,以实现清晰性和可伸缩性: module.exports = class MyRoute { method = 'get'; url = '/stuff'; constructor(someService) { this.someService = someService; } async handler(req, res, next) { // h

我正在使用express构建一个框架应用程序,并尝试将我的端点作为类编写,以实现清晰性和可伸缩性:

module.exports = class MyRoute {
    method = 'get';
    url = '/stuff';

    constructor(someService) {
        this.someService = someService;
    }

    async handler(req, res, next) {
        // handle request and response
    }
}

但是,如果我这样做,我如何让express注册这些路线?我以前在以前的工作中见过,但我不记得怎么做了

不清楚你到底想要什么,我可以想出很多方法来利用这种设计

但是我认为这就是你想要的,因为你的类上有
method
url
属性

routeModule.js
文件:

module.exports=类MyRoute{
方法='get';
url='/stuff';
构造函数(服务){
this.someService=someService;
}
异步处理程序(req、res、next){
//处理请求和响应
}
}
index.js
文件或注册路线的任何位置:

const routeModule=new(require(“./path/to/routeModule”)();
app[routeModule.method](routeModule.url,routeModule.handler);
该代码将通过
方法
名称和
url
动态注册您的路线,结果将相当于

app.get(“/stuff”,routeModule.handler);

我想到了一些东西,如果您手动注册大量路由,可能会使代码更干净。我在express client上创建了一个注册路由模块的函数:

const-app=express();
app.addRouteModule=函数{
此[s.method](s.url,s.handler);
}
然后,您可以轻松调用它以将类注册为新路由:

const routeModuleA=new(require(“./path/to/routeModuleA”)();
const routeModuleB=new(require(“./path/to/routeModuleB”))();
const routeModuleC=new(require(“./path/to/routeModuleC”))();
app.addRouteModule(RouteModule A);
app.addRouteModule(RouteModule B);
app.addRouteModule(RouteModule C);
//或
app.addRouteModule(新增(require(“./path/to/RouteModule”))();
app.addRouteModule(新的(require(“./path/to/RouteModule”))();
app.addRouteModule(新的(require(“./path/to/RouteModule”))();

我正在试验您的设计,我想到了一些可能会使您的代码更干净的东西,请查看我的编辑:)