# 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))