浅谈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 相关文章推荐
JavaScript版代码高亮
Jun 26 Javascript
javascript dom 基本操作小结
Apr 11 Javascript
js遍历td tr等html元素
Dec 13 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
Mar 05 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
layer实现弹窗提交信息
Dec 12 Javascript
vue-router路由简单案例介绍
Feb 21 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
vue-router3.0版本中 router.push 不能刷新页面的问题
May 10 Javascript
vue滚动插件better-scroll使用详解
Oct 18 Javascript
vue-cli点击实现全屏功能
Mar 07 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
javascript编写简易计算器
2017/05/06 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
python远程登录代码
2008/04/29 Python
用python 制作图片转pdf工具
2015/01/30 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python实现的栈(Stack)
2018/01/26 Python
python的中异常处理机制
2018/08/30 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Python对象转换为json的方法步骤
2019/04/25 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
python实现五子棋程序
2020/04/24 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
2016公司年会主持词
2015/07/01 职场文书
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
分享几个简单MySQL优化小妙招
2022/03/31 MySQL