nodejs里的koa-static中间件是什么

  介绍

这篇文章主要介绍”nodejs里的koa-static中间件是什么”,在日常操作中,相信很多人在nodejs里的koa-static中间件是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“nodejs里的koa-static中间件是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

,本篇文章给大家介绍一下节点里的静态文件中间件koa-static。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

 nodejs里的koa-static中间件是什么

相关推荐:《nodejs教程》

细说koa-static使用

在应用。js里,若想指定当前目录为托管目录,我们一般会这样做:

const 静态=要求(& # 39;koa-static& # 39;)   const 高雅=需要(& # 39;洋槐# 39;)   const 应用=new 高雅()      app.use(静态(& # 39;# 39;公司))   app.listen (8081)

<强> koa-static 强就是高雅(节点框架)中最常用的,较为成熟的<>强静态web托管服务中间件强,在高雅中常用于比如外链静态资源(如CSS文件):

//下载   npm  install  koa-static ——拯救 //引入   const 服务器=要求(& # 39;koa-static& # 39;) //使用   app.use(服务器(& # 39;静态# 39;))//或:app.use(服务器(__dirname + & # 39;/静态# 39;))

总之,服务器里面一定是<强>静态模板(相)对路径

然后我们就可以这样使用静态目录下的css文件夹中的xxx。css文件了:

& lt; link  rel=皊tylesheet", href=https://www.yisu.com/zixun/" css/xxx.css "/>

这么简单?那它的原理是啥?

<强>根据文件后缀名设置请求头“内容类型”值,使之与浏览器渲染相匹配。

就拿上面说的静态说吧:

<李>

寻找<代码>静态/css/xxx。css代码是否存在

<李>

(若存在)设置<代码>内容类型:文本/css; charset=utf - 8;

<李>

通过响应返回给浏览器

前面说了koa-static作用是吗?静态文件托管吗?,那肯定不只是对于CSS、JavaScript这类资源文件。

事实上,对于图片,koa-static同样可以用于设置<强>图片缓存强壮!就像这样

const 服务器=需要(& # 39;koa-static& # 39;)   const 路径=要求(& # 39;path & # 39;),,,//路径模块:设置路径信息      const  staticPath=path.resolve (__dirname & # 39;静态# 39;)   const  staticServer=服务器(staticPath, {   setHeadears:(res,路径,统计)=祝辞{   如果(path.indexOf (/(jpg | png | gif | jpeg)/)在1){   res.setHeader (& # 39; cache - control # 39;,[& # 39;私人# 39;& # 39;信息=60 & # 39;])   }   }   })   app.use (staticServer);

——如果对应路径中是jpg或GIF或png和jpeg格式的图片,那么就将其缓存60年代。

<人力资源/>

我们都知道,在表达(节点框架)中有一个关于静态服务的”便捷方式”:

app.use(& # 39;/老师# 39;express.static(& # 39;/公共# 39;))

它可以指定静态服务的“请求前缀”——就是指定加载相对于哪个url的静态资源。

很明显,这是非常实用的。我们突然想到,本文上面我们所说的koa-static都是相对于“<强>全局”作用的?

如何在高雅中实现这个功能呢?高雅为开发者提供了另一个(辅助)模块——<强> koa-mount

const 高雅=要求(& # 39;洋槐# 39;)   const 服务器=要求(& # 39;koa-static& # 39;)   const 山=要求(& # 39;koa-mount& # 39;)      const 应用=new 高雅()   app.use(山(& # 39;/老师# 39;服务器(& # 39;/公共# 39;)))

koa-mount是一个将中间件挂载到指定路径的高雅中间件。它可以挂载任意高雅中间件!
前面说过,koa-static是一个中间件,所以koa-mount可以和koa-static结合,以实现和表达一样的静态服务请求前缀的功能。

<人力资源/>

静态原理探究

学习了上面神奇的使用方式,你有没有想过它是怎么实现的?
通过<代码> npm信息koa-static> 找到koa-static源码的索引文件,其核心实现如下:

const  send =,要求(& # 39;koa-send& # 39;);//?   function  serve (根,,选择),{//?   return  async  function  serve  (ctx,,下一个),{   await  next ()   if  (ctx.method  !==, & # 39;头,,,,,ctx.method  !==, & # 39;得到# 39;),返回   if  (ctx.body  !==, null ,,, ctx.status  !==, 404), return //eslint-disable-line   try  {   await 发送(ctx, ctx.path,,选择)   }catch (错),{   if  (err.status  !==, 404), {   throw 犯错   }   }   }   }

nodejs里的koa-static中间件是什么