什么是javascript的中間件?


第一次寫博客,有點想在博客園試水的感覺,也分享下覺得有用的東西(源碼自己寫的)

 

什么是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
}
寫完后有爽快的感覺,各位大大如果覺得喜歡的話,攢個吧,我會繼續努力的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM