浅谈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 相关文章推荐
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
Aug 24 Javascript
Vuejs实现带样式的单文件组件新方法
May 02 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
浅谈Vuejs Prop基本用法
Aug 17 Javascript
vue 添加vux的代码讲解
Nov 30 Javascript
详解如何用babel转换es6的class语法
Apr 03 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
微信小程序bindtap事件与冒泡阻止详解
Aug 08 Javascript
Angular短信模板校验代码
Sep 23 Javascript
js中延迟加载和预加载的具体使用
Jan 14 Javascript
JavaScript实现简单图片切换
何时使用Map来代替普通的JS对象
详解Js模块化的作用原理和方案
详解JavaScript中的执行上下文及调用堆栈
JavaScript实现淘宝商品图切换效果
JavaScript实现显示和隐藏图片
Apr 29 #Javascript
JS Canvas接口和动画效果大全
Apr 29 #Javascript
You might like
请离开include_once和require_once
2013/07/18 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
php身份证号码检查类实例
2015/06/18 PHP
jquery 入门教程 [翻译] 推荐
2009/08/17 Javascript
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
nodejs中的fiber(纤程)库详解
2015/03/24 NodeJs
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
调试Python程序代码的几种方法总结
2015/04/28 Python
python获取目录下所有文件的方法
2015/06/01 Python
分享Python文本生成二维码实例
2016/01/06 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
详解Python locals()的陷阱
2019/03/26 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
python 读取二进制 显示图片案例
2020/04/24 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
酒店保洁主管岗位职责
2013/11/28 职场文书
机电专业大学生职业规划书范文
2014/02/25 职场文书
小班下学期评语
2014/05/04 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
师德师风承诺书
2014/05/23 职场文书
横幅标语大全
2014/06/17 职场文书
三峡导游词
2015/01/31 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
党员反四风学习心得体会
2016/01/22 职场文书