怎么实现动态路由?
发布于 1 年前 作者 dmwin72015 1609 次浏览 最后一次编辑是 9 个月前 来自 问答

刚开始学习,node,express。用到路由器这块。刚开始直接写在routes下,但是后发现,每次要增加一个新的请求,就会修改对应的路由文件下,增加一个get,或者post方法,感觉非常不方便。后来发现有的项目,不需要这么麻烦,比如:有一个controller目录下,放的是所有的路由,每个文件名对应的就是相应的请求路径,每个请求执行的是controller下对应名字的这个文件。而且这样每次增加新的路由,只需要在controller下增加一个文件就可以了,其他地方都不用修改。 那么问题来了: 这个是怎么实现的,给一个思路了,我已开始想的是,读取目录下的所有文件,获取所有文件的path,然后在require(path)。不知道这样可不可以?

8 回复

你的思路是对的,但应该不用读取所有的controller文件的path,而且根椐请求参数来判断当前请求所需require的controller文件 switch(ctx.path){ //根椐不同的请求方法和path, require指定目录下的不同文件进行相应的业务逻辑处理 }

同意 tim1020 的说法,另外补充几点:

  • 对于相似规则的uri,可以通过参数的形式,在一个action中捕捉然后分流,不一定通过路由的机制实现。比如 koa-router,中的参数的使用。
  • 动态加载路由可能会额外的暴露一些私有的方法,这点在实现动态路由时候要注意
  • 路由文件的配置虽然看似罗嗦,但却在规则中很好的描述了网站或者服务的功能入口,便于项目的维护。

上面说的都挺好的,尤其是@douguohui 谢谢

感谢大家帮助!

@tim1020 我开始的思路也是这样的,但如果是,根据请求参数去判断,然后在require所需的文件,岂不是在速度方面比一次性require所有的文件要慢,毕竟require所有文件之后,不会在涉及到文件读取IO操作了

回到顶部