【问题标题】:Express.js Benefits to using Router vs App.use routing?Express.js 使用 Router 与 App.use 路由的好处?
【发布时间】:2014-12-24 06:39:27
【问题描述】:

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

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

app.use(function (req, res, next) {
  next();
})

或者你也可以这样做

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

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

【问题讨论】:

  • 在嵌套路由和将代码组织在单独的文件中时很有用。使用express generator 生成一个应用程序以查看基本示例。

标签: node.js express routes


【解决方案1】:

使用路由可以帮助您在 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);,这有助于保持我的代码井井有条并且更易于遵循。

【讨论】:

  • 哦,我明白了,非常感谢。顺便说一句,很好的例子。我也可以看到这将如何扩展得更好。欣赏它:)
  • 所以如果将行更改为var jsonPostRouter= express() 也可以完成相同的操作,使用 express.Router() 与安装应用程序相比有什么好处?我想它只会产生稍微少一点的开销,但它甚至很明显吗?
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 2021-04-27
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多