
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.4.1 koa-static
在app.js里,若想指定当前目录为托管目标,代码如下。

在终端中,执行app.js启动服务器,并通过curl-i进行测试,代码如下。

以上是通过HTTP访问package.json文件的代码,通过控制台打印出来的结果可以得到如下结论。
○ Content-Type是application/json。
○ HTTP状态是200,表示成功响应。
○ 代码尾部为package.json内的JSON数据。
经过这个过程,我们可以得到一个文件,通过文件后缀可以获得HTTP访问能力,这个能力实际上就是静态服务器提供的。这里是package.json,前端常用的JavaScript、CSS等都可以通过静态服务器提供。
那么,静态资源托管具体是怎么实现的呢?实际上,通过npm info koa-static,你会发现koa-static依赖两个模块,分别是debug和koa-send,其中koa-send是核心模块。
在koa-static源码的index.js文件里,最核心的实现如下。

由上面的示例可以看出,其中的核心是send方法,即koa-send提供的。通过源码进行学习是非常好的方法。查找源码思路时,首先要查看npm信息,一般可以到GitHub的仓库地址上查看,也可以通过npm安装包的文件进行查看。另外也可以在GitHub上直接搜索,注意搜索关键字,搜索也是程序员必备的能力。
注意,像koa-static这样的小模块,是非常适合深入学习的。尤其是配置项处理、异常处理等细节,最能体现开发者的功夫。对笔者而言,即使是十年以上的开发者依然有很多细节需要学习。