浅谈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,jquery闭包概念分析
Jun 19 Javascript
JavaScript实现的encode64加密算法实例分析
Apr 15 Javascript
13个PHP函数超实用
Oct 21 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
Nov 17 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
JavaScript如何借用构造函数继承
Nov 06 Javascript
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
js实现简单的轮播图效果
Dec 13 Javascript
绘制微信小程序验证码功能的实例代码
Jan 05 Javascript
React Fragment介绍与使用详解
Nov 11 Javascript
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
PHP 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
php win下Socket方式发邮件类
2009/08/21 PHP
PDO::setAttribute讲解
2019/01/29 PHP
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
2016/03/13 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Nodejs实现图片上传、压缩预览、定时删除功能
2019/10/25 NodeJs
JS实现公告上线滚动效果
2021/01/10 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
Python File readlines() 使用方法
2018/03/19 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
python numpy 反转 reverse示例
2019/12/04 Python
tensorflow的计算图总结
2020/01/12 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
保安拾金不昧表扬信
2014/01/15 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
安全生产年活动总结
2014/08/29 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
个人求职信格式范文
2015/03/20 职场文书
golang json数组拼接的实例
2021/04/28 Golang