怎么动态设置koa的静态资源服务器
我想根据客户端的类型,来请求不同的静态文件
比如我移动端跟pc端请求的同一个地址 http://localhost:3000/images/1.jpg 但是返回的图片是不一样的
const Koa = require('koa')
const path = require('path')
const static = require('koa-static')
const app = new Koa()
app.use(async (ctx) => {
const u = ctx.header['user-agent'];
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
const isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
if(isAndroid || isiOS) {
app.use(static(path.join(__dirname, './staticPhone')))
} else {
app.use(static(path.join(__dirname, './staticPc')))
}
})
app.listen(3000)
但是这样不生效,有办法动态请求静态资源么
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
思路错了,app.use实际上是将预先定义好的方法串联起来为一个大的方法调用链条,然后根据请求来处理响应;
你的逻辑上是动态更改这个链条,不可能;
所以变通一下,通过添加if else逻辑来动态更改参数,而不是方法;
因为这只是通过设备类型添加中间件。
判断设备类型之后,判断查看的是否是文件,返回路径下文件,没有就404。