浅谈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 相关文章推荐
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
判断是否安装flash player及当前版本的JS代码
Aug 08 Javascript
checkbox使用示例
Aug 23 Javascript
嵌入式iframe子页面与父页面js通信的方法
Jan 20 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 Javascript
原生js的RSA和AES加密解密算法
Oct 08 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
微信小程序中form 表单提交和取值实例详解
Apr 20 Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 Javascript
自定义事件解决重复请求BUG的问题
Jul 11 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
jQuery 动画与停止动画效果实例详解
May 19 jQuery
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
JS查看对象功能代码
2008/04/25 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
Python中import机制详解
2017/11/14 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python剪切视频与合并视频的实现
2020/03/03 Python
python实现猜数游戏
2020/03/27 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
Java面试题:为什么要用Java
2012/05/11 面试题
2014年会演讲稿范文
2014/01/06 职场文书
yy结婚证婚词
2014/01/10 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
优秀团员个人总结
2015/02/26 职场文书
2015年司法所工作总结
2015/04/27 职场文书
倡议书范文大全
2015/04/28 职场文书
运动会200米广播稿
2015/08/19 职场文书
告诉你一个秘密:富人致富的五大优点
2019/07/11 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Java 关于String字符串原理上的问题
2022/04/07 Java/Android
Spring 使用注解开发
2022/05/20 Java/Android