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

时间:2014-10-28 18:08:33

标签: node.js express routes

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

所以基本上你可以通过

来定义路线
app.use(function (req, res, next) {
  next();
})

或者您也可以

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

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

1 个答案:

答案 0 :(得分:2)

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

当我在JSON中有一个特定的帖子请求时,这就是我使用它的方式,但并非所有进入的请求都是JSON,所以我必须在这个实例中解析JSON然后回复:

单独使用应用程序:

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

使用具有特定路由器的应用程序:

    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);

然后,我可以将路由器代码放在一个单独的模块中,只需在我的主服务器代码中使用app.use("/search", jsonPostRouter);,这有助于保持我的代码井井有条,更容易理解。