koa中静态文件资源中间件实现
程序员文章站
2022-11-27 14:18:55
项目实践过程中,会使用非常多的静态资源,怎样可以直接在浏览器中访问到这些静态资源 const fs = require('fs'); const path = require('path'); module.exports = (dirpath = "./public") => { return a ......
项目实践过程中,会使用非常多的静态资源,怎样可以直接在浏览器中访问到这些静态资源
-
-
const fs = require('fs'); const path = require('path'); module.exports = (dirpath = "./public") => { return async (ctx, next) => { if (ctx.url.indexof("/public") === 0) { //public 开头 读取文件 const url = path.resolve(__dirname, dirpath); // path.basename(p, [ext]) // 提取出用‘/’隔开的path的最后一部分,ext是过滤字符 // path.basename('/foo/bar/baz/asdf/quux.html', '.html') // returns // 'quux' const filebasename = path.basename(url); // public const filepath = url + ctx.url.replace("/public", ""); //得到文件目录 console.log(filepath); try { //判断是否是一个文件夹 stats = fs.statsync(filepath); if (stats.isdirectory()) { const dir = fs.readdirsync(filepath); console.log(dir); // [ 'index.html', 'style.css' ] const ret = ['<div style="padding-left">']; dir.foreach(filename => { console.log(filename); //不带小数点的格式,就是文件夹 if (filename.indexof(".") > -1) { ret.push( `<p><a style="color:black" href="${ctx.url}/${filename}">${filename}</a></p>`) } else { //文件 ret.push(`<p><a href="${ctx.url}/${filename}">${filename}</a></p>`) } }); ret.push("</div>") ctx.body = ret.join(""); } else {
//访问到的是一个文件,则直接读取内容 console.log('文件'); const content = fs.readfilesync(filepath); ctx.body = content; } } catch (error) { ctx.body = "404 ,not found"; console.log(error); } } else { //否则不是静态资源,直接去下一个中间件 await next(); } } }同时在我们的app文件中添加中间件的引用
-
const static = require('./static'); app.use(static('./public'));
便可以在浏览器中使用public目录来访问文件了
- 参考文档 用来判断是否是一个文件夹
-
上一篇: jquery学习总结1-12
推荐阅读
-
springboot中jsp引用静态资源css,js的实现方法
-
15.ASP.NET Core 应用程序中的静态文件中间件
-
koa中静态文件资源中间件实现
-
SpringBoot中的静态资源访问的实现
-
ASP.NET Core 应用程序中的静态文件中间件的实现
-
nginx 多个location转发任意请求或访问静态资源文件的实现
-
springboot中jsp引用静态资源css,js的实现方法
-
javascript实现动态导入js与css等静态资源文件的方法_javascript技巧
-
PHP中实现生成静态文件的方法缓解服务器压力_PHP教程
-
我在自己写的PHP框架中实现了静态页面缓存也就是文件缓存,请问可以加快页面加载速度吗?