深入浅析nodejs里的koa-static中间件


本文摘自PHP中文网,作者青灯夜游,侵删。

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

相关推荐:《nodejs 教程》

细说koa-static使用

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

1

2

3

4

5

6

const static=require('koa-static')

const Koa=require('koa')

const app=new Koa()

 

app.use(static('.'))

app.listen(8081)

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

1

2

//下载

npm install koa-static --save

1

2

//引入

const server=require('koa-static')

1

2

//使用

app.use(server('static'))//或:app.use(server(__dirname+'/static'))

总之,server里面一定是静态模板(相对)路径

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

1

<link rel="stylesheet" href="css/xxx.css" />

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

根据文件后缀名设置请求头 「Content-Type」值,使之与浏览器渲染相匹配!

就拿上面说的static说吧:

  • 寻找 static/css/xxx.css 是否存在

  • (若存在)设置 Content-Type: text/css;charset=utf-8;

  • 通过response返回给浏览器

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

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

1

2

3

4

5

6

7

8

9

10

11

12

const server=require('koa-static')

const path=require('path')   //path模块:设置路径信息

 

const staticPath=path.resolve(__dirname,'static')

const staticServer=server(staticPath,{

    setHeadears:(res,path,stats)=>{

        if(path.indexOf(/[jpg|png|gif|jpeg]/)>-1){

            res.setHeader('Cache-Control',['private','max-age=60'])

        }

    }

})

app.use(staticServer);

――如果对应路径中是jpg/GIF/png/jpeg格式的图片,那么就将其缓存60s。


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

1

app.use('/teacher',express.static('/public'))

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

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

阅读剩余部分

相关阅读 >>

浅谈npm邮箱验证问题的解决方法

nodejs是js框架么?

浅谈nodejs关闭进程的方法

10个面向开发人员的顶级nodejs框架

前端用nodejs能做什么

使用源码如何编译安装nodejs?

node.js访问sql数据库的方法

nodejs怎么读写json文件?方法介绍

html5+nodejs实现websocket即时通讯的示例代码分享

3个值得收藏的实用nodejs软件包

更多相关阅读请进入《静态文件中间件》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...