看koa-static 这个中间件的源码。
module.exports = serve
function serve (root, opts) {
opts = Object.assign({}, opts)
root是静态文件的根目录,不能为空,否则抛出异常。
opts是参数,参数可空,没有默认参数。但是参数必须是对象,如果不是对象,assign方法会抛出异常。
1.在js中函数没有重载的概念,如果声明了多个重名的函数,不管函数的形参个数是否一样,只有最有一个有效,其他的函数声明都是无效的。比如说声明了两个函数fn(),第一次声明时没有形参,第二次声明时形参有两个,则在调用fn()时不管有没有传入参数,都是调用后声明的那个函数。假如说调用时只传入了1个参数,例如fn(1),则1会赋给函数的第一个形参,而第二个形参不会赋值,如果有用到,就会当undefined处理,可能会报错。如果调用时传入了3个参数,例如fn(1,2,3),则1会赋给第一个形参,2会赋给第二个形参,3是用不上的,但是不会报错。
转自 https://www.cnblogs.com/daixiaotian/p/6423691.html
if (opts.index !== false) opts.index = opts.index || 'index.html'
if (!opts.defer) {
判断有两个,一个是指定index,只要不是明确写了index:false,则index为undefined或其他值,
opts.index !== false 都为真,也就是不指定的话,默认就是index.html,
一个是设置了defer。设置了defer的话,就其他中间件先处理。
try {
await send(ctx, ctx.path, opts)
} catch (err) {
if (err.status !== 404) {
throw err
}
如果找不到文件,不会抛出异常,只是返回404错误。
本文解析了koa-static中间件的源码,介绍了如何通过该中间件配置静态文件服务,包括设置根目录、默认索引文件及错误处理等关键功能。
1380

被折叠的 条评论
为什么被折叠?



