node中間件都有哪些

藏色散人
發布: 2021-12-10 13:52:34
原創
3682 人瀏覽過

node中間件有:1、koa-bodyparser;2、koa-body;3、靜態資源管理器koa-static;4、cors;5、koa-cors;6、koa-cors2設定請求頭等等。

node中間件都有哪些

本文操作環境: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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!