浅谈node.js中间件有哪些类型


Posted in Javascript onApril 29, 2021

概述

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

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

1、应用级中间件

每一个中间件就是调用一个函数,需要配合其他的中间件或者路由使用

server (函数) 拦截所有的路由

server.use('/reg',函数);拦截特定的路由

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、内置中间件

server.use(express.static('目录'))

把静态资源文件托管到某一个目录,如果浏览器请求静态资源,则自动到这个目录下查找

3、第三方中间件

(1)body-parser,将post请求数据解析为对象

const express = require('express');
//引入body-parser中间件
const bodyParser=require('body-parser');

var server=express();
server.listen(3000);
// 托管静态资源到public
server.use(express.static('./public'));

//使用body-parser中间件,将post请求的数据解析为对象
//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创建连接
var connection=mysql.createConnection({
    host:'127.0.0.1',
    port:'3306',
    user:'root',
    password:'1234',
    database:'tedu'
});
//1.2执行连接
connection.connect();
//执行sql语句
connection.query('select * from emp',(err,result)=>{
    if(err) throw err;
    console.log(result);
});
//关闭连接
connection.end();

连接池

const mysql=require('mysql');
//使用连接池
//创建连接池对象
var pool=mysql.createPool(
    {
        host:'127.0.0.1',
        port:'3306',
        user:'root',
        password:'1234',
        database:'tedu',
        connectionLimit:20
    }
);
//执行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
})
//使用占位符插入数据
// pool.query("insert into emp values(?,?,?,?,?,?)",[null,'yt','1','1995-12-24','9000','20'],(err,result)=>{
//     if(err) throw err;
//     console.log(result);
// });
//使用对象插入数据
// 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的数据
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中间件有哪些类型的详细内容,更多关于node.js中间件的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
一段效率很高的for循环语句使用方法
Aug 13 Javascript
Javascript Object.extend
May 18 Javascript
js查错流程归纳
May 04 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
Apr 19 Javascript
在JavaScript中使用timer示例
May 08 Javascript
JQuery动态添加和删除表格行的方法
Mar 09 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
angularjs实现分页和搜索功能
Jan 03 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 Javascript
详解VS Code使用之Vue工程配置format代码格式化
Mar 20 Javascript
js异步接口并发数量控制的方法示例
Nov 22 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
js几个不错的函数 $$()
2006/10/09 Javascript
javascript 写类方式之三
2009/07/05 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
如何用Django处理gzip数据流
2021/01/29 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
光荣入党自我鉴定
2014/01/22 职场文书
审计主管岗位职责
2014/01/31 职场文书
物理教学随笔感言
2014/02/22 职场文书
物流管理专业推荐信
2014/09/06 职场文书
礼貌问候语大全
2015/11/10 职场文书
党校培训学习心得体会
2016/01/06 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL