• 技术文章 >web前端 >前端问答

    node中间件都有哪些

    藏色散人藏色散人2021-12-10 13:52:34原创1606

    node中间件有:1、koa-bodyparser;2、koa-body;3、静态资源管理器koa-static;4、cors;5、koa-cors;6、koa-cors2设置请求头等等。

    大前端成长进阶课程:进入学习

    本文操作环境:Windows7系统,nodejs10.16.2版,Dell G3电脑。

    node中间件都有哪些?

    node中间件类型:

    node中间件就是封装在程序中处理http请求的功能。node中间件是在管道中执行。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。

    中间件为主要的逻辑业务所服务,可分为:应用级中间件、路由级中间件、内置中间件、第三方中间件、错误级中间件。

    node常用的中间件:

    在node的学习过程中积累了许多好用的中间件。这些中间件大部分要个koa配合使用

    1、koa-bodyparser

    这个插件使用来解析前端post请求带来的参数的

    //入口文件
    const bodyParser = require('koa-bodyparser');
    app.use(bodyParser({//设置可以接收的数据类型
        enableTypes:['json', 'form', 'text']
    }))
    async function (ctx) {
        console.log(ctx.request.body)
        ctx.req.on('data',(data) => {
            console.log(JSON.parse(data),'文件')
        })
    }

    在没有引入koa-bodyparser的情况下只能通过ctx.req.on('data',callback)来获取参数

    而引入中间件后只要ctx.request.body就可以获取到参数。相比第一种便利很多。

    2、koa-body

    这个插件是用来获取请求中上传的文件和文件信息比如图片过zip文件

    const koaBody    = require('koa-body')
    app.use(koaBody({
            multipart: true,
            formidable: {
                maxFileSize: 20 * 1024 * 1024    // 设置上传文件大小最大限制,默认2M
            }
        }))

    在请求的处理中就可以直接通过ctx.request.files就能获取到所有上传的文件的信息。

    注意!!!用了koa-body就不要在使用koa-bodyparser会冲突导致前端的post请求返回的status码为canceled

    3、静态资源管理器koa-static

    在本地测试的时候我上传了一张图片,然后将图片地址打印后是一长串的c://.../name/.png,这样虽然在本地能够访问但是如果放到服务器上就行不通了!

    通过引入koa-static可以将静态文件地址指定到项目路径上的某个文件夹然后通过koa监听的端口直接http://192.168.0.177:3030/name.png就能访问图片了

    const koaStatic  = require('koa-static')
    app.use(koaStatic('./public'))//括号中是设置的静态文件路径

    4、cors、koa-cors、koa-cors2设置请求头

    这几个中间件基本我都是用来配置跨域和请求头的信息

    const cors       = require('koa2-cors') 
    app.use(cors({
        exposeHeaders: ['multipart/form-data','application/x-www-form-urlencoded']
    }))

    可以自己设置参数也可以不设置参数直接app.use(cors())就可以跨域。

    这里说到跨域就顺便提一提原生node跨域的设置方法(同样可以设置请求头的各种配置)

    app.use(async (ctx, next) => {
       ctx.set('Access-Control-Allow-Origin', ctx.headers.origin)//'*'有可能会问题
       ctx.set('Access-Control-Allow-Credentials', 'true')
       ctx.set('Access-Control-Allow-Headers', 'Origin ,multipart/form-data, X-Requested-With, Content-Type, Accept')
       await next()
    })

    后续要是有遇到哪些好用的中间件再来记录!!!

    推荐学习:《node.js视频教程

    以上就是node中间件都有哪些的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:node
    上一篇:定义自定义字体需要css的什么规则 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• nvm 怎么改node默认版本• node.js 显示乱码怎么办• 如何解决node res.write 乱码问题• node算语言吗• 如何解决node 400报错问题
    1/1

    PHP中文网