淺談node.js中間件有哪些類型
概述
node中間件就是封裝在程序中處理http請求的功能。node中間件是在管道中執(zhí)行。中間件位于客戶機/ 服務(wù)器的操作系統(tǒng)之上,管理計算機資源和網(wǎng)絡(luò)通訊。
中間件為主要的邏輯業(yè)務(wù)所服務(wù),可分為:應(yīng)用級中間件、路由級中間件、內(nèi)置中間件、第三方中間件、錯誤級中間件。
1、應(yīng)用級中間件
每一個中間件就是調(diào)用一個函數(shù),需要配合其他的中間件或者路由使用
server (函數(shù)) 攔截所有的路由
server.use('/reg',函數(shù));攔截特定的路由
const express=require('express'); var server=express(); server.listen(3000); //中間件攔截注冊路由/reg server.use('/reg',(req,res,next)=>{ console.log('注冊驗證'); next(); }); server.use('/login',(req,res)=>{ console.log('記錄了日志'); }) server.get('/reg',(req,res,next)=>{ res.send('注冊成功'); next(); }); server.get('/login',(req,res)=>{ res.send('登陸成功'); })
2、內(nèi)置中間件
server.use(express.static('目錄'))
把靜態(tài)資源文件托管到某一個目錄,如果瀏覽器請求靜態(tài)資源,則自動到這個目錄下查找
3、第三方中間件
(1)body-parser,將post請求數(shù)據(jù)解析為對象
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請求的數(shù)據(jù)解析為對象 //extended是否要使用擴展qs模塊解析為對象 //如果是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)建連接池對象 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); // }); //使用對象插入數(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); // }) //使用占位符刪除編號為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中間件有哪些類型的詳細內(nèi)容,更多關(guān)于node.js中間件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
NodeJS實現(xiàn)微信公眾號關(guān)注后自動回復(fù)功能
這篇文章主要為大家詳細介紹了NodeJS實現(xiàn)微信公眾號關(guān)注后自動回復(fù)功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05Node.js 緩沖區(qū)(Buffer)模塊的方法及實例分析
在本篇文章里小編給大家整理了一篇關(guān)于Node.js 緩沖區(qū)(Buffer)模塊的方法及實例分析,對此有興趣的朋友們可以跟著學(xué)習(xí)下。2022-01-01如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL
這篇文章主要介紹了如何正確使用Nodejs 的 c++ module 鏈接到 OpenSSL,需要的朋友可以參考下2014-08-08Ubuntu中搭建Nodejs開發(fā)環(huán)境過程分享
這篇文章主要介紹了Ubuntu中搭建Nodejs開發(fā)環(huán)境過程,比較郁悶的是apt-get安裝失敗了,如果有遇到一樣問題的朋友,可以參考一下本文2014-06-06node連接MySQL數(shù)據(jù)庫的3種方式總結(jié)
現(xiàn)在前端基本上都會用一些NodeJs,想必也想自己寫一些API或者個人博客的后臺系統(tǒng),這些就離不開連接數(shù)據(jù)庫的問題,下面這篇文章主要給大家介紹了關(guān)于node連接MySQL數(shù)據(jù)庫的3種方式,需要的朋友可以參考下2022-08-08nodejs+express實現(xiàn)文件上傳下載管理網(wǎng)站
這篇文章主要為大家詳細介紹了nodejs+express實現(xiàn)文件上傳下載管理的網(wǎng)站,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03