express 路由 只能一个个配或者用文件遍历读取吗?有没有更好的自动加载路由的方法?
发布于 7 年前 作者 a526672351 4352 次浏览 来自 问答

var users = require(’./routes/users’); var mall = require(’./routes/mall’);

app.use(’/’, index); app.use(’/users’, users);

这样一个个的写在 app.js 这样太臃肿了? 有没有更加优的解决方案? mount-routes 自动加载路由看了下源码也是用 fs 遍历啊

18 回复

你把这些路由,分到不同的route文件里面, 也不会显得特别臃肿吧,

@liujavamail 已经拆分到 route 不过多个路径都要配置到app.js还是会非常臃肿

可以通过 fs 一个循环来 require,但是很蠢。 现在虽然看起来写起来很麻烦,但是语义很好的。

@lcjnil 嗯嗯,fs,是可以但这种文件的遍历真的不好。所以一直头痛着,不想用这种担心以后成为性能的瓶颈。你又没有试过npm express auto router 这种插件

fs遍历 怎么会有性能瓶颈?只要目录结构够合理,路由应该比较清楚吧

koahubjs有自动加载路由

来自酷炫的 CNodeMD

启动时遍历一下 跟手动加载没啥差吧 为啥会成为瓶颈 自豪地采用 CNodeJS ionic

@immatt2015

启动的时候加载,不会成为瓶颈的

@lcjnil 为什么会蠢呢?

君不见各种require-directory,require-dir等实现么?

另外约定大约配置(CoC)是有它的好处的

其实一个网站没多少路由地址的,放在一个文件里配置,简单明了,不是很好吗?

@i5ting express 不是约定大于配置的吧。

将具体的路由以及约定 写到router.conf.js类似配置的文件,然后写个解析对象封装下,app.js可以用一行就搞定了所有; app.js调用的一个再封装的 流程对象,里面写调用解析流程的,安全验证的,各种等事件等等。。 app.js可以做到只写一句话搞定;

@Alexis374 express不是,但mount-routes的目的就是为了约定的

解决问题复杂性的问题最有效的方案是分层隔离,私以为声明路由并不代表不优雅,优雅也要建立在实用的基础上,自动挂载路由可能会带来代码可读性的问题,最好是合理规划API,使用成熟的API思想和框架,适当分层隔离,降低每一个组件的复杂度。

@libook 哈哈,都是这么说的,给出更好的解决方案

我也觉得这个看起来不舒服,强迫症患者

回到顶部