摘要:但是如果請求地址沒有和中定義的地址匹配上,那么這個時候就會調用原生的去發送這個請求。比如中間件的實現
Decorate模式
Decorate模式的幾個常見的應用場景:
throttle(函數節流)
debounce(函數防抖)
AOP
裝飾者模式基本的套路就是在不改變原有的函數提供的功能的情況下,再次封裝提供額外的功能
函數防抖即在一定的時間間隔s秒內重復觸發某個動作的話,這個動作都會被延遲執行,只有等到這s秒沒有再觸發這個動作的時候再去執行.例如在使用input標簽進行實時搜索的時候,如果不加函數防抖時,那么每次你輸入一個字符,或者是按下一次鍵盤就會發送一次,這樣對于網絡請求的消耗比較大,所以對你所監聽的字符長度或者鍵盤事件的回調函數再用debounce進行封裝一次,在規定的時間范圍里不重復觸發,只有到規定的時間范圍里面沒有再次觸發這個動作的時候再去執行回調函數:
function debounce (fn, dur) { let timer = null return function (...args) { clearTimer(timer) timer = setTimeout(() => { timer = null fn.apply(this, args) }, dur) } }
關于AOP的例子,可戳我&version=12010310&nettype=WIFI&fontScale=100&pass_ticket=Rxc3/D6oYRoNUmB+eyGQ8y1V5O76bWdXCv0Un4GOeFw=)
proxy 模式proxy模式和decorate模式在代碼組織的套路上有點相似,但是二者的功能及側重點有些差別:
proxy模式在不改變原有函數的功能上,去改變最后的執行過程和結果。比如大家可能使用過的mockjs.
在你開發環境當中,引入這個庫,事實上在mockjs將整個xhr的事件和方法等都模擬了一遍,核心的套路就是對外暴露和原生的xhr一致的對象和方法,但是在開發環境下,如果你的請求地址和你在mockjs中定義的需要攔截的地址能匹配上,那么會調用mockjs中重寫的xhr的方法,你會發現你的請求沒有發出去,而是被mockjs攔截了。但是如果請求地址沒有和mockjs中定義的地址匹配上,那么這個時候就會調用原生的xhr去發送這個請求。
具體的實現請戳我
總結proxy模式是在原有的函數的基礎上進行一次封裝,將本體封裝為proxy去供外部調用,封裝后的函數向外提供的API方法和原有的函數保持一致,但是在封裝函數內部做出一些額外的處理。比如上面提到的mockjs,當沒有匹配到定義的路徑后,會使用原生的xhr去發送這個請求.
因此你使用的時候訪問順序是: proxy -->> 本體
decorate同樣也是在原有的函數的基礎上進行封裝,但是封裝后的函數在原有函數的基礎上新增一些其他的功能。比如express中間件的實現.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82782.html
摘要:所以自己動手用重新實現了一遍里面的設計模式,算是對其的鞏固,也算是與大家一起來研究探討語法的一些最佳實踐。 前言 最近在回顧設計模式方式的知識,重新翻閱了《JavaScript模式》(個人感覺也算是一本小有名氣的書了哈)一書,讀時總有感觸:在即將到來的ES6的大潮下,書中的許多模式的代碼可用ES6的語法更為優雅簡潔的實現,而另一些模式,則已經被ES6原生支持,如模塊模式(99頁)。所...
摘要:工廠模式工廠模式代碼片段訪問靜態屬性要加符靜態方法生成實例對象,作為函數的參數工廠就是負責生成對象的類或方法工廠模式,是把創造者類和要生產的類分開,創建者是個工廠類,定義了用于生產產品對象的方法行程特殊的代碼重復,不必要的子類話,為了工 工廠模式 /* 工廠模式代碼片段*/ class Employee{ private static $type = array(minio...
摘要:單體模式有以下優點用來劃分命名空間,減少全局變量數量。通常我們使用操作符創建單體模式的三種選擇,讓構造函數總返回最初的對象使用全局對象來存儲該實例不推薦,容易全局污染。實現該工廠模式并不困難,主要是要找到能夠穿件所需類型對象的構造函數。 介紹 最近開始給自己每周訂個學習任務,學習結果反饋為一篇文章的輸出,做好學習記錄。 這一周(02.25-03.03)我定的目標是《JavaScri...
摘要:高質量特性面向對象,無類,原型可維護的代碼可讀一致可預測看起來像是同一個人寫的文檔減少全局對象,傳參訪問全局對象單模式,忘記時的副作用顯式聲明的全局變量無法用刪除不擴充內置原型模式每個和對齊這里不考慮花括號相關的縮進規則每個中的代碼整齊縮進 高質量Javascript Javascript特性:面向對象,無類,原型 可維護的代碼(可讀;一致;可預測;看起來像是同一個人寫的;文檔) 減...
閱讀 3560·2021-11-25 09:43
閱讀 3139·2021-10-08 10:04
閱讀 1633·2019-08-26 12:20
閱讀 2060·2019-08-26 12:09
閱讀 602·2019-08-23 18:25
閱讀 3578·2019-08-23 17:54
閱讀 2330·2019-08-23 17:50
閱讀 808·2019-08-23 14:33