浅谈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 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
JavaScript脚本性能优化注意事项
Nov 18 Javascript
如何使Chrome控制台支持多行js模式——意外发现
Jun 13 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
jQuery zTree 异步加载添加子节点重复问题
Nov 29 jQuery
实战node静态文件服务器的示例代码
Mar 08 Javascript
浅谈webpack-dev-server的配置和使用
May 17 Javascript
JS学习笔记之闭包小案例分析
May 29 Javascript
layui table 列宽百分比显示的实现方法
Sep 28 Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 Javascript
js轮播图之旋转木马效果
Oct 13 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
缅甸的咖啡简史
2021/03/04 咖啡文化
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
Ubuntu系统下Angularjs开发环境安装
2016/09/01 Javascript
jQuery中的deferred使用方法
2017/03/27 jQuery
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
javascript原型链学习记录之继承实现方式分析
2019/05/01 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
原生js实现购物车
2020/09/23 Javascript
Python实现获取操作系统版本信息方法
2015/04/08 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python实现字符串逆序输出功能示例
2017/06/24 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
eclipse创建python项目步骤详解
2019/05/10 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
HTML5 weui使用笔记
2019/11/21 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
竞选卫生委员演讲稿
2014/04/28 职场文书
政治表现评语
2014/05/04 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
项目安全员岗位职责
2015/02/15 职场文书
党员进社区活动总结
2015/05/07 职场文书
《确定位置》教学反思
2016/02/18 职场文书
python如何获取网络数据
2021/04/11 Python
为什么node.js不适合大型项目
2021/04/28 Javascript
python turtle绘图
2022/05/04 Python