我在Node.js中学习Express,遇到了路由器(),允许我们模块化我们的路由。但我发现了这个密码:
// 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('/',路由器);应用这些路由。也就是说,如果我们使用app.get('/',路由器)怎么办?
发布于 2020-04-15 12:33:22
我将给出一个简单的代码示例,让您了解express.Router()的用法。是的,你说得对,这对modularization.很有帮助实际上,它使我们的主app.js文件从所有路由中清除。我们只是把所有的路线,根据他们的目的,在不同的文件,并要求他们时,需要。因此,假设我有两个文件app.js和register.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请求。
发布于 2020-04-15 11:51:33
路由器只是它自己的一个中间件。如果您使用app.get('/', router),您将只对GET请求使用路由器。使用use通道,所有请求都在那里。
发布于 2020-04-15 11:57:12
当使用app.use时,它处理所有的HTTP方法,但当使用app.get时,它只使用GET方法。
app.use的另一个优势是,该路由将与紧跟其路径的任何路径与/匹配。例如:
app.use('/v1', ...)将匹配/users、/users/accounts、/users/accounts/account-id等。
https://stackoverflow.com/questions/61227749
复制相似问题