浅谈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 相关文章推荐
JS面向对象编程 for Cookie
Sep 19 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
Aug 04 Javascript
在网页中插入百度地图的步骤详解
Dec 02 Javascript
jQuery DateTimePicker 日期和时间插件示例
Jan 22 Javascript
详解Node 定时器
Feb 26 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
Sep 28 Javascript
vue init webpack 建vue项目报错的解决方法
Sep 29 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 Javascript
layui中的switch开关实现方法
Sep 03 Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 Javascript
JavaScript中EventBus实现对象之间通信
Oct 18 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
PHP URL参数获取方式的四种例子
2014/02/28 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
2018/12/06 NodeJs
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
学习Python列表的基础知识汇总
2020/03/10 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
关于元旦的广播稿
2014/02/16 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
总结Pyinstaller打包的高级用法
2021/06/28 Python
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL