koa-static

koa-static是一个koa-send的封装,所以重点其实是koa-send.
koa-send会接收三个参数,ctx,path与opt.
其中path是访问的url.opt.root是我们设置的静态资源根路径,他会被赋值给root.
path和root会被path的join和normalize拼接成一个规范化的路径并赋值给path.这个path用来查找要传输的文件.

stats = await fs.stat(path)

如果他是一个目录,那么就在那个目录下查找是否有index.html文件.

    if (stats.isDirectory()) {
      if (format && index) {
        // index为opt.index->index.html
        path += '/' + index
        stats = await fs.stat(path)
      } else {
        return
      }
    }

之后会用该path来创建一个可读流,用于向客户端传递数据.

ctx.body = fs.createReadStream(path)

整个send模块就是这样了,koa-static的功能也是由它实现的.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容