Express.js 使用 Router 和 App.use 路由的好处?

aug*_*aug 5 routes node.js express

根据Express 文档app.use和 Router 都实现了路由器接口,并且都可以作为中间件。

所以基本上你可以通过做来定义路线

app.use(function (req, res, next) {
  next();
})
Run Code Online (Sandbox Code Playgroud)

或者你也可以做

var router = express.Router();
router.get('/', function (req, res, next) {
  next();
})
app.use(router);
Run Code Online (Sandbox Code Playgroud)

我只是想知道我是否有理由在应用程序上使用路由器?我唯一能找到的使用一个或另一个是我需要与我的params. 只是好奇。

Meg*_*ron 3

使用路由可以帮助在 Express/Node 中组织代码。

当我有一个 JSON 格式的特定 post 请求时,这就是我使用它的方式,但并非所有传入的请求都是 JSON,因此我必须仅在这种情况下解析 JSON 并随后响应:

单独使用应用程序:

    app.use("/search", bodyParser.json());
    app.post("/search", function(request, response) {
        params= request.body;
        getSearchResults(params.words, params.numbers, response);
    });
Run Code Online (Sandbox Code Playgroud)

将应用程序与特定路由器一起使用:

    var jsonPostRouter= express.Router();
    jsonPostRouter.use(bodyParser.json())
    jsonPostRouter.use( function(request, response) {
        var params= request.body;
        getSearchResults(params.words, params.numbers, response);
    });

    app.use("/search", jsonPostRouter);
Run Code Online (Sandbox Code Playgroud)

然后,我可以将路由器代码放在一个单独的模块中,并将其放在app.use("/search", jsonPostRouter);我的主服务器代码中,这有助于保持我的代码组织有序且更易于遵循。

  • 因此,如果将行更改为“var jsonPostRouter=express()”,则可以完成相同的任务,使用express.Router()与安装应用程序相比有什么好处?我想它只会稍微减少开销,但它是否明显? (5认同)