express.static() 方法

预计阅读时间1 分 136 views

在构建Web应用时,我们经常需要提供静态文件,如图片、CSS和JavaScript文件。Express框架提供了一个内置的中间件函数express.static,它专门用于这个目的。

一、什么是 express.static()

express.static 是Express框架中的一个内置中间件,它用于提供静态文件。这个中间件基于serve-static,并且通过指定的根目录来确定要提供的文件。

二、如何使用 express.static()

使用express.static非常简单。你只需要指定一个根目录root,Express就会从这个目录中提供静态文件。如果请求的文件不存在,它不会立即返回404错误,而是调用next()函数,这样你就可以在链中添加更多的中间件来处理请求。

三、options 可选项

express.static 允许你通过一个options对象来自定义其行为:

属性描述类型默认值
dotfiles决定如何处理以点(.)开头的文件或目录。字符串“ignore”
etag启用或禁用etag生成。布尔值true
extensions设置文件扩展名回退。如果找不到文件,搜索指定扩展名的文件并提供第一个找到的文件。混合类型false
fallthrough允许客户端错误作为未处理请求通过,否则转发客户端错误。布尔值true
immutable启用或禁用Cache-Control响应头中的immutable指令。布尔值false
index发送指定的目录索引文件。设置为false以禁用目录索引。混合类型“index.html”
lastModified设置Last-Modified头为文件在操作系统上的最后修改日期。布尔值true
maxAge设置Cache-Control头中的max-age属性,单位为毫秒或ms格式的字符串。数字0
redirect当路径名是目录时,重定向到尾部的”/”。布尔值true
setHeaders设置随文件一起提供的HTTP头的函数。函数

特殊说明

  • dotfiles: 这个选项决定了如何处理以点(.)开头的文件或目录。可能的值为 “allow”(不特别处理点文件)、”deny”(拒绝请求点文件,并响应403错误)、”ignore”(假装点文件不存在,并响应404错误)。
  • fallthrough: 当设置为true时,如请求一个不存在的文件或一个错误的请求,中间件将调用next()来处理链中的下一个中间件。设置为false时,即使是404错误也会调用next(err)
  • setHeaders: 这个选项允许你指定一个函数来设置自定义的响应头。对头的修改必须同步进行。

四、示例

下面是一个使用express.static中间件函数的示例:

var options = {
  dotfiles: 'ignore',       // 忽略点文件
  etag: false,              // 不生成etag
  extensions: ['htm', 'html'], // 文件扩展名回退
  index: false,             // 禁用目录索引
  maxAge: '1d',            // 设置文件的最大缓存时间
  redirect: false,          // 不重定向到尾部的"/"
  setHeaders: function (res, path, stat) {
    res.set('x-timestamp', Date.now()) // 设置自定义响应头
  }
}

app.use(express.static('public', options)) // 使用静态文件中间件
分享此文档

express.static() 方法

或复制链接

本页目录