浅谈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 学习入门篇附实例代码
Mar 16 Javascript
jQuery ready函数滥用分析
Feb 16 Javascript
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
javascript对中文按照拼音排序代码
Aug 20 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
纯js实现手风琴效果
Apr 17 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
vue全局使用axios的方法实例详解
Nov 22 Javascript
vue前后分离调起微信支付
Jul 29 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 Javascript
vue3+typescript实现图片懒加载插件
Oct 26 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
js实现图片360度旋转
2017/01/22 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
浅谈layui 绑定form submit提交表单的注意事项
2019/10/25 Javascript
jQuery实现移动端笔触canvas电子签名
2020/05/21 jQuery
js实现鼠标滑动到某个div禁止滚动
2020/09/17 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
Python的Django框架中的表单处理示例
2015/07/17 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Windows下安装Scrapy
2018/10/17 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
历史系自荐信范文
2013/12/24 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
士力架广告词
2014/03/20 职场文书
慰问信格式规范
2015/03/23 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
搭讪开场白台词大全
2015/05/28 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python