Apakah perisian tengah nod?

藏色散人
藏色散人asal
2021-12-10 13:52:343738semak imbas

Perisian tengah nod termasuk: 1. koa-bodyparser; 3. Pengurus sumber statik; seterusnya.

Apakah perisian tengah nod?

Persekitaran pengendalian artikel ini: sistem Windows 7, nodejs versi 10.16.2, komputer Dell G3.

Apakah perisian tengah nod itu?

jenis perisian tengah nod:

perisian tengah nod ialah fungsi memproses permintaan http yang terkandung dalam atur cara. Perisian tengah nod dilaksanakan dalam saluran paip. Middleware terletak di atas sistem pengendalian klien/pelayan dan menguruskan sumber komputer dan komunikasi rangkaian.

Perisian tengah menyediakan perniagaan logik utama dan boleh dibahagikan kepada: perisian tengah peringkat aplikasi, perisian tengah peringkat penghalaan, perisian tengah terbina dalam, perisian tengah pihak ketiga dan perisian tengah peringkat ralat.

Perisian tengah yang biasa digunakan dalam nod:

Dalam proses pembelajaran nod, saya telah mengumpul banyak perisian tengah yang berguna. Kebanyakan perisian tengah ini perlu digunakan bersama-sama dengan koa

1 koa-bodyparser

Pemalam ini digunakan untuk menghuraikan parameter yang dibawa oleh permintaan pos bahagian hadapan

//入口文件
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),'文件')
    })
}

Tanpa pengenalan koa-bodyparser, parameter

hanya boleh diperolehi melalui ctx.req.on('data',callback Selepas memperkenalkan middleware, hanya ctx.request). badan boleh mendapatkan parameter. Jauh lebih mudah daripada yang pertama.

2. koa-body

Pemalam ini digunakan untuk mendapatkan fail dan maklumat fail yang dimuat naik dalam permintaan, seperti gambar dan fail zip

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

Dalam pemprosesan permintaan Anda boleh mendapatkan maklumat tentang semua fail yang dimuat naik terus melalui ctx.request.files.

Perhatian! ! ! Selepas menggunakan koa-body, jangan gunakan koa-bodyparser Ia akan bercanggah, menyebabkan kod status yang dikembalikan oleh permintaan pos bahagian hadapan dibatalkan

3 Pengurus sumber statik koa-static

telah diuji secara tempatan Pada masa itu, saya memuat naik gambar, dan kemudian mencetak alamat gambar untuk menjadi rentetan panjang c://.../name/.png Walaupun ia boleh diakses secara tempatan, ia akan tidak berfungsi jika ia diletakkan pada pelayan!

Dengan memperkenalkan koa-static, anda boleh menentukan alamat fail statik pada folder pada laluan projek, dan kemudian mengakses imej secara terus melalui port mendengar koa http://192.168.0.177:3030/name. png

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

4. Pengepala permintaan set Cors, koa-cors, koa-cors2

Saya pada asasnya menggunakan middleware ini untuk mengkonfigurasi merentas domain dan meminta maklumat pengepala

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

Anda boleh menetapkan sendiri parameter atau anda boleh terus menggunakan app.use(cors()) tanpa menetapkan parameter untuk merentas domain.

Bercakap tentang domain silang di sini, izinkan saya menyebut kaedah tetapan domain silang nod asli (anda juga boleh menetapkan pelbagai konfigurasi pengepala permintaan)

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()
})

Jika anda menemui sebarang perkara yang baik pada masa hadapan, Mari rakam perisian tengah yang digunakan! ! !

Pembelajaran yang disyorkan: "tutorial video node.js"

Atas ialah kandungan terperinci Apakah perisian tengah nod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn