淺談node.js中間件有哪些類型
概述
node中間件就是封裝在程序中處理http請(qǐng)求的功能。node中間件是在管道中執(zhí)行。中間件位于客戶機(jī)/ 服務(wù)器的操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通訊。
中間件為主要的邏輯業(yè)務(wù)所服務(wù),可分為:應(yīng)用級(jí)中間件、路由級(jí)中間件、內(nèi)置中間件、第三方中間件、錯(cuò)誤級(jí)中間件。
1、應(yīng)用級(jí)中間件
每一個(gè)中間件就是調(diào)用一個(gè)函數(shù),需要配合其他的中間件或者路由使用
server (函數(shù)) 攔截所有的路由
server.use('/reg',函數(shù));攔截特定的路由
const express=require('express');
var server=express();
server.listen(3000);
//中間件攔截注冊(cè)路由/reg
server.use('/reg',(req,res,next)=>{
console.log('注冊(cè)驗(yàn)證');
next();
});
server.use('/login',(req,res)=>{
console.log('記錄了日志');
})
server.get('/reg',(req,res,next)=>{
res.send('注冊(cè)成功');
next();
});
server.get('/login',(req,res)=>{
res.send('登陸成功');
})
2、內(nèi)置中間件
server.use(express.static('目錄'))
把靜態(tài)資源文件托管到某一個(gè)目錄,如果瀏覽器請(qǐng)求靜態(tài)資源,則自動(dòng)到這個(gè)目錄下查找
3、第三方中間件
(1)body-parser,將post請(qǐng)求數(shù)據(jù)解析為對(duì)象
const express = require('express');
//引入body-parser中間件
const bodyParser=require('body-parser');
var server=express();
server.listen(3000);
// 托管靜態(tài)資源到public
server.use(express.static('./public'));
//使用body-parser中間件,將post請(qǐng)求的數(shù)據(jù)解析為對(duì)象
//extended是否要使用擴(kuò)展qs模塊解析為對(duì)象
//如果是false,不使用,而去使用querystring模塊
server.use(bodyParser.urlencoded(
{extended:false}
))
server.post('/mylogin',(req,res)=>{
console.log(req.body);
res.send('登陸成功');
})
(2)mysql模塊
普通連接
//引入mysql模塊
const mysql =require('mysql');
//1、普通連接
//1、1創(chuàng)建連接
var connection=mysql.createConnection({
host:'127.0.0.1',
port:'3306',
user:'root',
password:'1234',
database:'tedu'
});
//1.2執(zhí)行連接
connection.connect();
//執(zhí)行sql語句
connection.query('select * from emp',(err,result)=>{
if(err) throw err;
console.log(result);
});
//關(guān)閉連接
connection.end();
連接池
const mysql=require('mysql');
//使用連接池
//創(chuàng)建連接池對(duì)象
var pool=mysql.createPool(
{
host:'127.0.0.1',
port:'3306',
user:'root',
password:'1234',
database:'tedu',
connectionLimit:20
}
);
//執(zhí)行sql語句
pool.query('select * from emp where eid=2',(err,result)=>{
if(err) throw err;
console.log(result);
})
const mysql=require('mysql');
var pool=mysql.createPool({
'host':'127.0.0.1',
port:'3306',
user:'root',
password:'1234',
database:'tedu',
connectionLimit:20
})
//使用占位符插入數(shù)據(jù)
// pool.query("insert into emp values(?,?,?,?,?,?)",[null,'yt','1','1995-12-24','9000','20'],(err,result)=>{
// if(err) throw err;
// console.log(result);
// });
//使用對(duì)象插入數(shù)據(jù)
// var emp={
// eid:null,
// ename:'html',
// sex:1,
// birthday:'1995-12-25',
// salary:10000,
// deptid:30
// }
// pool.query('insert into emp set ?',[emp],(err,result)=>{
// if(err) throw err;
// console.log(result);
// })
//使用占位符刪除編號(hào)為10的數(shù)據(jù)
pool.query('delete from emp where eid=?',[10],(err,result)=>{
if(err) throw err;
console.log(result);
if(result.affectedRows>0){
console.log('刪除成功');
}
else{
console.log('刪除失敗');
}
})
以上就是淺談node.js中間件有哪些類型的詳細(xì)內(nèi)容,更多關(guān)于node.js中間件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
nodeJS與MySQL實(shí)現(xiàn)分頁數(shù)據(jù)以及倒序數(shù)據(jù)
這篇文章主要介紹了nodeJS與MySQL實(shí)現(xiàn)分頁數(shù)據(jù)以及倒序數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
node.js中ws模塊創(chuàng)建服務(wù)端與客戶端實(shí)例代碼
在Node.js中提供了http模塊與https模塊,專用于創(chuàng)建HTTP服務(wù)器、HTTP客戶端,以及HTTPS服務(wù)器及HTTPS客戶端,同時(shí)實(shí)現(xiàn)這些服務(wù)器端與客戶端之中所需進(jìn)行的處理,下面這篇文章主要給大家介紹了關(guān)于node.js中ws模塊創(chuàng)建服務(wù)端與客戶端的相關(guān)資料,需要的朋友可以參考下2023-05-05
Node.js開發(fā)之套接字(socket)編程入門示例
這篇文章主要介紹了Node.js開發(fā)之套接字(socket)編程,結(jié)合簡(jiǎn)單實(shí)例形式分析了node.js套接字socket客戶端與服務(wù)器端相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2019-11-11
jwt在express中token的加密解密實(shí)現(xiàn)過程
文章詳細(xì)介紹了JWT在Node.js中的生成和驗(yàn)證過程,包括設(shè)置密鑰、使用中間件進(jìn)行token驗(yàn)證等步驟,并提供了一個(gè)完整的示例代碼,感興趣的朋友跟隨小編一起看看吧2025-01-01
npm?list輸出結(jié)果包含extraneous標(biāo)志記錄分析
這篇文章主要為大家介紹了npm?list輸出結(jié)果包含extraneous標(biāo)志記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
從reflect?metadata理解Nest實(shí)現(xiàn)原理
這篇文章主要為大家介紹了從reflect?metadata理解Nest實(shí)現(xiàn)原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
用npm install時(shí)報(bào)錯(cuò)node-sass npm ERR command
在用npm install時(shí)報(bào)錯(cuò)npm ERR! path D:…\node-sass和npm ERR! command failed 問題,本文給大家介紹了如何解決這個(gè)問題,文中通過圖文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
NodeJS設(shè)計(jì)模式總結(jié)【單例模式,適配器模式,裝飾模式,觀察者模式】
這篇文章主要介紹了NodeJS設(shè)計(jì)模式,結(jié)合實(shí)例形式總結(jié)分析了nodejs單例模式,適配器模式,裝飾模式,觀察者模式的概念、原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09

