第一次写博客,有点想在博客园试水的感觉,也分享下觉得有用的东西(源码自己写的)

什么是javascript中间件呢?函数middle就是用来构建中间件的,我用例子说明下

下面我定义了一个函数use,在use第一个参数传入一个回调函数,如下

function use(func){
func("参数1","参数2")
}
//正常的传入回调函数的用法。

var func=function(req,res){

    console.log(req)//=>参数1
console.log(res)//=>参数2
}
use(func)
//使用中间件构建,如下,middle函数在下面有定义,往下看
var func=middle(function(req,res,next){
 console.log("这里是新添加中间部分")
console.log(req)//=>参数1
console.log(res)//=>参数2
next() ;//next指向下一个函数 },function(req,res,next){
 console.log("这里是新添加中间部分")
console.log(req)//=>参数1
console.log(res)//=>参数2
next() ;//next指向下一个函数 },function(req,res,next){
//这是原始的函数
console.log(req)//=>参数1
console.log(res)//=>参数2 })
use(func)
中间件的用法就这么简单,但是功能很强大,想想你可以在nodejs中监听网页链接的时候,可以把用户验证、查找数据、显示数据都分离出来,通过中间件组合成一个最终你想要的逻辑函数,想想就觉得痛快。
中间件的源码如下,代码很少,你也可以去github里面下载源码,https://github.com/caoke90/middle/blob/master/middle.js
var middle=function(){
var next=function(func1,func2){
return function(){
var arg=Array.prototype.slice.call(arguments)
var arr=[].concat(arg)
arg.push(function(){
if(typeof func2=="function"){
func2.apply(this,arr)
}
})
return func1.apply(this,arg);
}
}
var arg=Array.prototype.slice.call(arguments)
var func=arg[arg.length-1]
for(var i=arg.length-2;i>=0;i--){
func=next(arg[i],func)
}
return func
}
写完后有爽快的感觉,各位大大如果觉得喜欢的话,攒个吧,我会继续努力的。

什么是javascript的中间件?的更多相关文章

  1. AJAX的前世今生与未来

    一.通过三个问答来认识一下Ajax 什么是Ajax? Ajax是Asynchronous Javascript And XML的缩写,它是一种技术. Ajax有什么用? 这一技术能够向服务器请求额外的 ...

  2. 【趣事】用 JavaScript 对抗 DDOS 攻击

    继续趣事分享. 上回聊到了大学里用一根网线发起攻击,今天接着往后讲. 不过这次讲的正好相反 -- 不是攻击,而是防御.一个奇葩防火墙的开发经历. 第二学期大家都带了电脑,于是可以用更高端的方法断网了. ...

  3. 从中间件的历史来看移动App开发的未来

    在移动开发领域我们发现一个很奇怪的现象:普通菜鸟新手经过3个月的培训就可以拿到 8K 甚至上万的工作:在北京稍微有点工作经验的 iOS 开发,就要求 2 万一个月的工资.不知道大家是否想过:移动应用开 ...

  4. ASP.NET Core Loves JavaScript

    前言 在 ASP.NET 团队的 Github 的主页上,有这样一个开源项目叫:"JavaScriptsServices",那么 什么是 JavaScriptsServices 呢 ...

  5. django 缓存、中间件、信号、CSRF 详解

    中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...

  6. ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

    概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware ...

  7. ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介

    概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...

  8. WebLogic12.1.1中跨域问题的探讨以及几种常见中间件中跨域问题的解决方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.问题描述 扬州现场中最开始安装了中间件WebLogic12.1.1 ...

  9. Techparty-广州Javascript技术专场(学习分享)

    上周末(2016/07/31)去了一个技术沙龙学习前端相关的东西,下面是各个主题我印象比较深的. React + Redux 最佳实践 主题:本次分享,主要从React/Redux相关概念及其工具链, ...

随机推荐

  1. 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors 标签: 图像处理MATLAB 2017-05-27 20:45 116人阅读

    实验要求: Objective: To know what are Web-safe colors, how to generate the RGB components for a given jp ...

  2. 1.scala基础语法总结

    Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...

  3. 7.ORDER BY 子句

    ORDER BY 语句 ORDER BY 语句用于根据指定的列对结果集进行排序. ORDER BY 语句默认按照升序对记录进行排序. 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字. 1 ...

  4. JavaScript——Dom编程(2)

    ①.创建一个元素节点: var reference = document.createElement(element) createElement(): 按照给定的标签名创建一个新的元素节点. 方法只 ...

  5. C++ 中 dynamic_cast 浅析

    简述:dynamic_cast 操作符,将基类的指针或引用安全的转换为派生类的指针或引用.主要讲解,dynamic_cast操作符的原理.使用方式.编译器设置.返回值等相关知识. dynamic_ca ...

  6. yum 安装telnet

    检测是否安装 rpm -qa |grep telnet 安装 yum install xinetd yum install telnet-server yum -y install telnet 再次 ...

  7. tornado设置cookie过期时间(expires time)

    具体的tornado设置过期时间的东西, 我也是查资料才发现的, 现在就贴代码吧 用户登录之后, 设置cookie, 我使用set_secure_cookie的, 它默认是有个30天的过期时间, 导致 ...

  8. mvc+EF - 有用文章

    Mvc全局过滤器与Action排除:http://blog.csdn.net/shuaihj/article/details/53020428 MVC 自定义AuthorizeAttribute实现权 ...

  9. C#导出Excel-利用特性自定义数据

    网上C#导出Excel的方法有很多.但用来用去感觉不够自动化.于是花了点时间,利用特性做了个比较通用的导出方法.只需要根据实体类,自动导出想要的数据  1.在NuGet上安装Aspose.Cells或 ...

  10. 快速下载android源码

    众所周知的原因,android源码被墙了,还好国内有不少镜像,这里使用清华提供的镜像. 以下内容转自: https://wiki.tuna.tsinghua.edu.cn/MirrorUsage/an ...