浅谈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 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
学习jQuey中的return false
Dec 18 Javascript
JS实现消息来时让网页标题闪动效果的方法
Apr 20 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
May 12 Javascript
js实现日期显示的一些操作(实例讲解)
Jul 27 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
JS监听事件的叠加和移除功能
Nov 19 Javascript
js 解析 JSON 数据简单示例
Apr 21 Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 Javascript
JavaScript this指向相关原理及实例解析
Jul 10 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
十天学会php之第五天
2006/10/09 PHP
php基础知识:类与对象(2) 自动加载对象
2006/12/13 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
2017/12/31 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
js 函数性能比较方法
2020/08/24 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
python版简单工厂模式
2017/10/16 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
简单了解python数组的基本操作
2019/11/26 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
新学期开学寄语
2014/01/18 职场文书
秋游活动策划方案
2014/02/16 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
创业计划书详解
2019/07/19 职场文书
MySQL Router的安装部署
2021/04/24 MySQL
Python上下文管理器Content Manager
2021/06/26 Python
redis数据一致性的实现示例
2022/03/18 Redis