整理 [NodeJs] Express 的路由器
这是 Node.js 的第23篇圣诞节日历文章。
首先
如果在Express服务器中定义路由,行数会逐渐增加。
我之前也是通过调用函数来处理而不是将处理写在app.js中,但最近我学到了更好的写法,想要分享一下。
也许这是理所当然的,但还是想分享一下。
学习主题
我想,很多人在看参考书或查看网页时会这样写Express,把所有的路由都写在一个文件中。是的,我也是这样的。
const express = require("express");
const app = express();
app.get('/user', (req, res) => {
...
})
app.post('/user', ...
app.patch('/user', ...
app.delete('/user', ...
app.get('task', ...
app.post'task', ...
请只提供一个选项,并用中文重新表达以下内容:
※ …在JavaScript中有不同的含义,请将其视为省略的意思。
当服务器的功能不断增加时,代码量会像五月雨一样增长,导致维护工作变得非常困难。
如果团队一起开发,很多人会同时修改同一个文件,可能会发生意想不到的事件… 我希望能够解决这个问题。
解决方案
首先,根据不同的功能模块创建文件。
在上述情况下,创建userRouter.js文件用于/user相关功能,创建taskRouter.js文件用于/task相关功能。
然后,在每个文件的开头进行如下声明。
const express = require("express");
const router = new express.Router();
然后,将处理程序从原始的app.js中移动过来。请将app.xxx更改为router.xxx。
router.get('/user', (req, res) => {
...
})
router.post('/user', ...
router.patch('/user', ...
router.delete('/user', ...
在 `taskRouter.js` 中也执行同样的操作。
最后就是对原来的app.js进行修正。
只需要require并使用创建的router即可。
const express = require("express");
const app = express();
app.use(express.json());
const userRouter = require('./userRouter')
const taskRouter = require('./taskRouter')
app.use(userRouter)
app.use(taskRouter)
没有什么事情,几乎所有的处理都已经移动到另一个文件,app.js变得清晰了。
通过这种方式,在创建新路径时只需修改app.js的两行代码。维护也更加简单。
总结
在我个人的经验中,知道这个之后,我在app.js文件中几乎不再写处理的代码了。
这样做不仅让代码更易读,而且在以后更换团队成员时,影响范围也会被最小化。如果可以的话,请尝试一下。
如果您想了解更多详情,请参考此处最后提到的 express.router。