You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express中app.use、express.static、cors中间件作用及中间件概念咨询

Express 代码运行逻辑解答

1. 中间件定义与 app.use() 运行机制

中间件是 Express 中处理 HTTP 请求的可复用函数,每一个中间件都可以访问请求对象 req、响应对象 res,以及用于触发下一个中间件执行的 next 函数。
app.use() 的作用是将传入的中间件注册到全局请求处理链路中,所有进入服务的请求,都会按照你编写 app.use() 的先后顺序,依次执行对应的中间件逻辑:

  • 如果某个中间件执行了返回响应的操作(比如调用 res.send()、res.json()),整个请求处理流程就会终止,不会继续执行后续中间件
  • 如果没有返回响应,中间件需要调用 next() 才会触发下一个中间件的执行

2. express.static() 中间件的作用

这是 Express 内置的专门用于托管静态资源的中间件,不需要额外安装依赖。它的作用是把你指定文件夹内的静态文件(HTML、CSS、JS、图片、字体等)直接对外暴露,用户可以通过 URL 直接访问这些文件,不需要你手动编写对应路由读取文件返回。
你示例代码中的写法存在不规范问题,标准写法是 app.use(express.static(path.join(__dirname, "public"))),作用是指定项目根目录下的 public 文件夹作为静态资源托管目录:比如 public 文件夹内有 logo.png 文件,用户请求 http://localhost:3000/logo.png 时,这个中间件就会直接读取文件返回给客户端,不会走到后续的逻辑中。

3. cors() 中间件的作用

这是第三方的跨域处理中间件,需要额外通过 npm 安装依赖。浏览器的同源策略默认会阻止前端页面从不同域名、端口、协议的服务端请求资源,调用 require("cors")() 会生成一个跨域处理中间件,它会自动给所有响应头添加跨域许可相关的字段,允许任意来源的请求访问你的服务,不需要你手动编写代码设置响应头的跨域参数。

示例代码的完整执行流程

  1. 服务启动后监听3000端口
  2. 收到客户端请求后,首先进入 express.static 中间件,判断是否是请求 public 文件夹内的静态资源:如果是直接返回资源,请求结束;如果不是继续走后续逻辑
  3. 进入 cors 中间件,给响应头添加跨域相关参数,之后调用 next() 进入后续你注册的其他路由/中间件逻辑

内容的提问来源于stack exchange,提问作者Elad87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:01