浅谈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 相关文章推荐
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 Javascript
jQuery 获取对象 基本选择与层级
May 31 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
AngularJS语法详解
Jan 23 Javascript
javascript中的五种基本数据类型
Aug 26 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
Mar 16 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
Jan 10 Javascript
使用JS中的Replace()方法遇到的问题小结
Oct 20 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
vue实现虚拟列表功能的代码
Jul 28 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
Nov 19 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
我的群发邮件程序
2006/10/09 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP CURL获取返回值的方法
2014/05/04 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
ReactNative实现Toast的示例
2017/12/31 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
python脚本监控docker容器
2016/04/27 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
用python制作游戏外挂
2018/01/04 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
python global和nonlocal用法解析
2020/02/03 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
教师岗位职责
2013/11/17 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
合作意向书范本
2014/03/31 职场文书
新年爱情寄语
2014/04/08 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
大学生工作自荐书
2014/06/16 职场文书
财务部岗位职责范本
2015/04/14 职场文书
通知范文怎么写
2015/04/16 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书