serve-static

静态文件托管服务中间,提供从给定的根目录中提供文件。要提供的文件将通过将 req.url 与提供的根目录组合来确定。当找不到文件时,该模块不会发送 404 响应,而是调用 next() 以继续下一个中间件,从而允许堆叠和回退。 用法如下:

  serveStatic(root, options);

:point_up: root为需要托管的静态跟目录,必传,且只能是一字符串,而options的参数定义如下:

属性 默认值 类型 描述
acceptRanges true boolean 禁用此选项不会发送 Accept-Ranges 并忽略 Range 请求标头的内容
cacheControl true boolean 启用或禁用设置 Cache-Control 响应头,禁用此选项将忽略不可变和 maxAge 选项。
dotfiles ignore string 设置遇到“点文件”时如何处理。点文件是以点(“.”)开头的文件或目录。
etag true boolean 启用或禁用 etag 生成
extensions false false/array 设置文件扩展名后备。设置后,如果未找到文件,则将给定的扩展名添加到文件名中并进行搜索。将提供第一个存在的。示例:['html', 'htm']。
fallthrough true boolean 是否映射多个目录到同一个web地址
immutable false boolean 在 Cache-Control 响应头中启用或禁用不可变指令,如果设置为 true,则还应指定 maxAge 选项以启用缓存。 immutable 指令将阻止受支持的客户端在 maxAge 选项的生命周期内发出条件请求以检查文件是否已更改
index true boolean 一般情况下,将发送index.html作为对应的目录请求
lastModified true boolean 启用或禁用Last-Modified标头,使用文件系统的最后修改值
maxAge 0 number 为 http 缓存提供一个以毫秒为单位的 max-age,也可以是 ms 模块接受的字符串
redirect true boolean 当路径名是目录时,重定向到目录名/
setHeaders null function 在响应中设置自定义header的功能,对header的更改需要同步触发,一般以fn(res, path, stat)的形式来调用

serve-static用法

  1. 作为普通的资源文件的托管服务
    var finalhandler = require('finalhandler')
    var http = require('http')
    var serveStatic = require('serve-static')
    var serve = serveStatic('public/ftp', { index: ['index.html', 'index.htm'] })
    var server = http.createServer((req, res) => {
    serve(req, res, finalhandler(req, res));
    })
    server.listen(3000)
    
  2. 作为下载的托管服务
    var contentDisposition = require('content-disposition')
    var finalhandler = require('finalhandler')
    var http = require('http')
    var serveStatic = require('serve-static')
    var serve = serveStatic('public/ftp', {
    index: false,
    setHeaders: setHeaders
    })
    // 通过重写headers来对客户端输出下载资源的动作
    function setHeaders (res, path) {
    res.setHeader('Content-Disposition', contentDisposition(path))
    }
    var server = http.createServer(function onRequest (req, res) {
    serve(req, res, finalhandler(req, res))
    })
    server.listen(3000)
    
  3. 多目录映射托管 ```javascript var finalhandler = require('finalhandler') var http = require('http'); var connect = require('connect'); var serveStatic = require('serve-static')

var app = connect(); app.use(serveStatic('public/ftp', { index: ['index.html', 'index.htm'] })); app.use(serveStatic('public/res')); var server = http.createServer((req, res) => { finalhandler(req, res); }); server.listen(3000) ```

依赖的核心库send

Send 是一个库,用于将文件系统中的文件作为 http 响应流式传输,支持部分响应(范围)、条件 GET 协商(If-Match、If-Unmodified-Since、If-None-Match、If-Modified-Since),高测试覆盖率和精细事件,可用于在您的应用程序或框架中采取适当的行动

results matching ""

    No results matching ""