【问题标题】:Confusion with app.use with Router() in express与 app.use 与 Express 中的 Router() 混淆
【发布时间】:2020-04-15 11:39:16
【问题描述】:

我在 Node.js 中学习 Express 并遇到 Router() 允许我们模块化我们的路线。但比我发现这段代码:

// we'll create our routes here

// get an instance of router
var router = express.Router();

...

// route with parameters (http://localhost:8080/hello/:name)
router.get('/hello/:name', function(req, res) {
    res.send('hello ' + req.params.name + '!');
});

// apply the routes to our application
app.use('/', router);

让我困惑的是为什么我们需要使用 app.use('/', router);应用路线。也就是说,如果我们使用 app.get('/', router);

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    我给你一个简单的代码示例,让你理解 express.Router() 的使用。是的,你说得对,它有助于模块化。实际上,它使我们的主 app.js 文件从所有路由中清除。我们只是根据它们的用途将所有这些路由放在不同的文件中,并在需要时使用它们。 所以假设我有两个文件 app.jsregister.js

    // app.js file's code goes here
    let express = require("express")
    let app = express()
    let register = require("./routes/register")
    
    app.use(register) // This will tell your app to import all those routes which are in register 
    
    // register.js file's code goes here
    let express = require("express")
    let router = express.Router()
    
    router.get("/register", callback_function);
    router.post("/register", callback_function);
    
    module.exports = router;
    

    所以基本上我要展示的是您的 register.js 可以包含所有类型的 HTTP 请求(GET、POST、PUT...)以及当我们使用 app 时。 use(register) 这将处理所有这些路由。 app.get("route_path", callback_function) 仅用于处理对该路径的 get 请求。

    【讨论】:

      【解决方案2】:

      路由器只是它自己的一个中间件。如果您使用app.get('/', router),您将仅将路由器用于GET 请求。使用use 通道那里的所有请求。

      【讨论】:

        【解决方案3】:

        当使用app.use 时,它会处理所有HTTP 方法,但当使用app.get 时,它只需要GET 方法。

        app.use 的另一个优势是路由将匹配紧跟其路径的任何路径与/。 例如:

        app.use('/v1', ...)
        

        将匹配 /users/users/accounts/users/accounts/account-id 等等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-05-15
          • 2021-12-04
          • 2014-07-09
          • 2016-01-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多