Express 是一款常用的后端框架,通过在项目中使用 Express 快速搭建路由功能可以提高开发效率。当项目中路由数量和逻辑复杂度增加时,手动维护路由可能会变得比较困难,而 express-route-printer
是一款便捷的 npm 包,可以生成 Express 应用的可读性更好的路由树,从而方便开发人员进行快速的调试和维护。
安装
你可以通过npm安装 express-route-printer
:
npm install express-route-printer
接着在你的 Express 应用中引入即可。
const express = require('express') const expressRoutePrinter = require('express-route-printer') const app = express()
使用
完成安装后,使用 expressRoutePrinter(app)
即可打印出 Express 应用的路由信息。
-- -------------------- ---- ------- -- ------ ----- ------- - ------------------ ----- ------------------- - -------------------------------- ----- --- - --------- ------------ ----- ---- -- - --------------- -------- -- -------------------- ----- ---- -- - -------------- --- ------------------ -- ------------------------
运行代码后,你将看到 bold 风格的路由树。
expressRoutePrinter()
在内部利用了 app._router.stack
获取路由信息,并通过翻译路由函数名称、方法和路径跟踪路由执行流程,最后格式化输出。
其中,每个路由的名称是根据路由的函数名称规范化得出的,如:home
对应于 getHome
,而我们在编写路由时只需要编写 get('/')
。同时,该包还支持嵌套路由。比如下面这个样例:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- ------------------- - -------------------------------- ----- --- - --------- ----- ----------- - ---------------- -------------------- ----- ---- -- - --------------- ------ -- ----------------------------- ----- ---- -- - --------------- ----------- -- ----------------- ------------ ------------------------
输出:
└── admin ├── home adminRouter.get('/') └── dashboard adminRouter.get('/dashboard')
可选参数
options.sortMethod
默认情况下,路由树是按照路由添加的顺序来显示。但是如果需要按照 HTTP 方法(比如 GET、POST 等)进行分组,可以设置 sortMethod
。
expressRoutePrinter(app, { sortMethod: 'http-method' })
输出结果:
├── GET │ └── / └── GET └── /users/:id
options.ignore
如果你需要忽略一些路由或者中间件,可以通过设置 ignore
参数实现。例如,如果要忽略所有来自路径为 /ignore 的请求,可以将 ignore
设置为:
expressRoutePrinter(app, { ignore: [ '/ignore', /index/ ] })
多个路径可以是字符串或者 RegExp 类型。
options.show
有时候你只需要查看相应路由,可以通过设置 show
参数进行限制。例如,如果只需要查看 POST 方法:
expressRoutePrinter(app, { show: [ 'POST' ] })
options.indent
可以控制缩进,调整可读性。默认为 2 个空格。
expressRoutePrinter(app, { indent: 4 })
小结
express-route-printer
包可以非常方便地打印出 Express 应用的路由树,从而方便开发人员进行调试和维护。同时该包还提供了多个可选参数,方便我们对路由树进行筛选、忽略或者按照 HTTP 方法分组展示。
最后,我们提醒读者注意路由设计规范和安全性,不要将密码或者授权信息明文地暴露在 URL 上,从而造成风险。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/82872