# express.static

提供静态文件,基于 serve-static

# 概要

express.static(root, [options])

# 描述

这是 Express 中内置的中间件函数。它提供静态文件,基于 serve-static

注意

为获得最佳效果,使用反向代理缓存以提高服务静态资产的性能。

root 参数指定提供静态资产的根目录。该函数通过将 req.url 与提供的 root 目录组合来确定要服务的文件。当找不到文件时,它不会发送 404 响应,而是调用 next() 以继续下一个中间件,从而允许堆叠和回退。

下表描述了 options 对象的属性。另见 下面的例子

属性 描述 类型 默认
dotfiles 确定如何处理点文件(以点 "." 开头的文件或目录)。 字符串 "ignore"
etag 启用或禁用 etag 生成注意:express.static 总是发送弱 ETag。 布尔值 true
extensions 设置文件扩展名后备:如果找不到文件,请搜索具有指定扩展名的文件并提供第一个找到的文件。示例:['html', 'htm'] 混合 false
fallthrough 让客户端错误作为未处理的请求通过,否则转发客户端错误。 布尔值 true
immutable Cache-Control 响应标头中启用或禁用 immutable 指令。如果启用,还应指定 maxAge 选项以启用缓存。immutable 指令将阻止受支持的客户端在 maxAge 选项的生命周期内发出条件请求以检查文件是否已更改。 布尔值 false
index 发送指定的目录索引文件。设置为 false 以禁用目录索引。 混合 "index.html"
lastModified Last-Modified 标头设置为操作系统上文件的最后修改日期。 布尔值 true
maxAge 设置 Cache-Control 标头的 max-age 属性(以毫秒为单位)或 ms 格式 中的字符串。 数字 0
redirect 当路径名是目录时,重定向到尾随 "/"。 布尔值 true
setHeaders 用于设置 HTTP 标头以与文件一起服务的功能。 函数

有关详细信息,请参阅 在 Express 中提供静态文件。和使用中间件 - 内置中间件

# dotfiles

此选项的可能值为:

  • "allow" - 对点文件没有特殊处理。
  • "deny" - 拒绝对点文件的请求,以 403响应,然后调用 next()
  • "ignore" - 就好像点文件不存在一样,用 404响应,然后调用 next()

# fallthrough

当此选项为 true时,客户端错误(例如错误请求或对不存在文件的请求)将导致此中间件简单地调用 next()以调用堆栈中的下一个中间件。当为 false 时,这些错误(甚至是 404)将调用 next(err)

将此选项设置为 true,以便您可以将多个物理目录映射到同一个 Web 地址或路由以填充不存在的文件。

如果您已将此中间件安装在严格设计为单个文件系统目录的路径上,请使用 false,这允许短路 404 以减少开销。这个中间件也会响应所有的方法。

# setHeaders

对于此选项,指定一个函数来设置自定义响应标头。对标头的更改必须同步发生。

该函数的签名是:

fn(res, path, stat)

参数:

  • res,响应对象。
  • path,正在发送的文件路径。
  • stat,正在发送的文件的 stat对象。

# express.static 示例

下面是一个将 express.static中间件函数与精心设计的选项对象一起使用的示例:

const options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders (res, path, stat) {
    res.set('x-timestamp', Date.now())
  }
}

app.use(express.static('public', options))
Last Updated: 6/17/2023, 6:57:19 PM