koa-static

2018-09-11  本文已影响0人  卡布奇洛猫

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的功能也是由它实现的.

上一篇 下一篇

猜你喜欢

热点阅读