浅谈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 相关文章推荐
关于hashchangebroker和statehashable的补充文档
Aug 08 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
Jul 25 Javascript
Three.js基础部分学习
Jan 08 Javascript
JavaScript for循环 if判断语句(学习笔记)
Oct 11 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
Mar 12 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
快速了解Node中的Stream流是什么
Feb 13 Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 Javascript
JavaScript 类的封装操作示例详解
May 16 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
当海贼王变成JOJO风
2020/03/02 日漫
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
PHP实现简易图形计算器
2020/08/28 PHP
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
jQuery选择器源码解读(一):Sizzle方法
2015/03/31 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
javascript实现仿百度图片的瀑布流加载效果
2016/04/20 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
Python遍历指定文件及文件夹的方法
2015/05/09 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
详解多线程Django程序耗尽数据库连接的问题
2018/10/08 Python
Python实现仿射密码的思路详解
2020/04/23 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
会计岗位职责
2013/11/08 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
人力资源求职信
2014/05/25 职场文书
外贸业务员求职信
2014/06/16 职场文书
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
python 实现图片特效处理
2022/04/03 Python