首页 > 解决方案 > 对中间件函数的路由感到困惑

问题描述

当对根有get请求时

app.get("/", (req, res)=>res.sendFile(__dirname+"/views/index.html") )

发回一个文件。

现在,这个函数

app.use("/", express.static("public"))

以同样的方式解释?我希望

https://myaddress.com/style.css

不要将任何东西作为请求返回给根/,而是/style.css

那我应该如何解释这个函数呢?

标签: node.jsexpress

解决方案


app.use("/", ...)将匹配任何以/. 所以,

app.use("/", express.static("public"))

将尝试与它看到的每个 URL 进行匹配(因为它们都以 开头/)并且实际上与以下内容相同:

app.use(express.static("public"));

因为默认路径app.use()/在没有指定时。

app.use()在这方面不同于app.get(),app.post()等。

直接来自Expressapp.use()文档:

路由将匹配紧随其路径的任何路径,并带有“/”。例如: app.use('/apple', ...) 将匹配“/apple”、“/apple/images”、“/apple/images/news”等。

app.get('/apple', ...)只会匹配/apple。它不会匹配/apple/imagesapp.use()在匹配上更加宽松。


推荐阅读