最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

代理模式在vue中的使用示例解析

 更新時(shí)間:2022年12月22日 09:58:03   作者:qb  
這篇文章主要為大家介紹了代理模式在vue中的使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

當(dāng)本體處于保護(hù)、緩存、虛擬或者過濾等情況下時(shí),一個(gè)數(shù)據(jù)不適合被訪問或者一個(gè)方法不能被直接調(diào)用,可以采用代理模式,先創(chuàng)建一個(gè)代理(本體對(duì)象或者方法的替身),作為訪問者和本體之間的中介或者橋梁。

本體訪問和代理訪問的區(qū)別

不使用代理:訪問 ==> 本體

使用代理:訪問 ==> 代理 ==> 本體

1、圖片預(yù)加載

// 本體
var myImage = (function () {
    var imgNode = document.createElement('img');
    document.body.appendChild(imgNode);
    return {
        setSrc: function (src) {
            imgNode.src = src;
        }
    }
})()
// 代理
var proxyImage = (function(){
    var img = new Image(); 
    img.onload = function(){
        myImage.setSrc( this.src );
    } 
    return { 
        setSrc: function( src ){ 
            myImage.setSrc( '預(yù)加載的圖片' ); 
            img.src = src;
        } 
    } 
})();

以上是本體和代理,都有相同的接口setSrc,有以下兩種訪問方式:

  • 直接訪問本體
myImage.setSrc("目標(biāo)圖片地址")

如果網(wǎng)速不太好,直接訪問本體,那么會(huì)出現(xiàn)圖片一截一截出現(xiàn)的情況。

  • 訪問代理對(duì)象
proxyImage.setSrc("目標(biāo)圖片地址")

如果網(wǎng)速不太好,可以先顯示默認(rèn)的loading圖,給用戶以預(yù)期。當(dāng)目標(biāo)圖片加載完成的時(shí)候,再將當(dāng)前的loading圖換成目標(biāo)圖片地址。

2、緩存代理

// 本體計(jì)算乘積
var mult = function(){
    var a = 1; 
    for ( var i = 0, l = arguments.length; i < l; i++ ){ 
        a = a * arguments[i]; 
    } 
    return a; 
}; 
// 代理計(jì)算乘積
var proxyMult = (function(){ 
    var cache = {}; 
    return function(){ 
        var args = Array.prototype.join.call( arguments, ',' ); 
        if ( args in cache ){ 
            return cache[ args ]; 
        } 
        return cache[ args ] = mult.apply( this, arguments ); 
    } 
})(); 

以上是本體和代理,都可以通過傳遞參數(shù)計(jì)算乘積,有以下兩種訪問方式:

  • 本體計(jì)算乘積
console.log(mult( 1, 2, 3, 4 )); // 24

計(jì)算會(huì)得出24的乘積,如果再次計(jì)算會(huì)再次進(jìn)行計(jì)算,如果數(shù)據(jù)量比較大的話,會(huì)重復(fù)計(jì)算;

  • 代理計(jì)算乘積
console.log(proxyMult( 1, 2, 3, 4 )); // 24

第一次計(jì)算會(huì)計(jì)算出24的乘積,并將其存到cache中,如cache["1,2,3,4"] = 24,第二次計(jì)算的時(shí)候,發(fā)現(xiàn)cache中有鍵為"1,2,3,4"的乘積,無(wú)需重復(fù)計(jì)算,直接返回。

3、跨域代理

在日常開發(fā)vue項(xiàng)目的過程中,會(huì)和后端進(jìn)行接口的聯(lián)調(diào)。

如果我們直接訪問后端接口,可能會(huì)出現(xiàn)跨域的問題。

我們可以通過配置webpackdevServer配置,先訪問本地的代理服務(wù)器,代理服務(wù)器去訪問后端服務(wù)器。因?yàn)椋?wù)器訪問服務(wù)器沒有跨域的說(shuō)法,所以,通過本地代理服務(wù)器作為中介,我們就實(shí)現(xiàn)了前端訪問后端接口的目的。

總結(jié)

在代理模式中本體和代理有著相同的訪問接口或者執(zhí)行后有同樣的效果,那么,開發(fā)前無(wú)需刻意進(jìn)行代理模式的預(yù)測(cè),當(dāng)需要的時(shí)候再去對(duì)本體進(jìn)行代理功能的編寫。根據(jù)功能的不同,代理模式又可分為,緩存代理、防火墻代理、保護(hù)代理和跨域代理等模式。

以上就是代理模式在vue中的使用示例解析的詳細(xì)內(nèi)容,更多關(guān)于vue 代理模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Elementui?el-input輸入框校驗(yàn)及表單校驗(yàn)實(shí)例代碼

    Elementui?el-input輸入框校驗(yàn)及表單校驗(yàn)實(shí)例代碼

    輸入框是使用非常多的元素,用來(lái)輸入用戶名、密碼等等信息,Element提供了功能和樣式豐富的輸入框,下面這篇文章主要給大家介紹了關(guān)于Elementui?el-input輸入框校驗(yàn)及表單校驗(yàn)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Vue組件間數(shù)據(jù)傳遞的方式(3種)

    Vue組件間數(shù)據(jù)傳遞的方式(3種)

    這篇文章主要介紹了Vue組件間數(shù)據(jù)傳遞的方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue祖孫組件如何實(shí)現(xiàn)傳值

    Vue祖孫組件如何實(shí)現(xiàn)傳值

    這篇文章主要介紹了Vue祖孫組件如何實(shí)現(xiàn)傳值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 解決vue頁(yè)面渲染但dom沒渲染的操作

    解決vue頁(yè)面渲染但dom沒渲染的操作

    這篇文章主要介紹了解決vue頁(yè)面渲染但dom沒渲染的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-07-07
  • 在vue項(xiàng)目中使用axios發(fā)送post請(qǐng)求出現(xiàn)400錯(cuò)誤的解決

    在vue項(xiàng)目中使用axios發(fā)送post請(qǐng)求出現(xiàn)400錯(cuò)誤的解決

    這篇文章主要介紹了在vue項(xiàng)目中使用axios發(fā)送post請(qǐng)求出現(xiàn)400錯(cuò)誤的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 淺談vue的iview列表table render函數(shù)設(shè)置DOM屬性值的方法

    淺談vue的iview列表table render函數(shù)設(shè)置DOM屬性值的方法

    下面小編就為大家?guī)?lái)一篇淺談vue的iview列表table render函數(shù)設(shè)置DOM屬性值的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-09-09
  • 關(guān)于elementUI select控件綁定多個(gè)值(對(duì)象)

    關(guān)于elementUI select控件綁定多個(gè)值(對(duì)象)

    這篇文章主要介紹了關(guān)于elementUI select控件綁定多個(gè)值(對(duì)象),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解vue-cli中配置sass

    詳解vue-cli中配置sass

    本篇文章主要介紹了詳解vue-cli中配置sass ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-06-06
  • vue中watch監(jiān)聽不到變化的解決

    vue中watch監(jiān)聽不到變化的解決

    本文主要介紹了vue中watch監(jiān)聽不到變化的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • vue2實(shí)現(xiàn)傳送門效果的示例

    vue2實(shí)現(xiàn)傳送門效果的示例

    本文主要介紹了vue2實(shí)現(xiàn)傳送門效果的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

焉耆| 松江区| 紫阳县| 全南县| 蓝田县| 垫江县| 文安县| 新津县| 扎囊县| 疏勒县| 苍山县| 纳雍县| 扎鲁特旗| 栾川县| 嘉黎县| 芒康县| 盐池县| 讷河市| 尚志市| 阜新市| 原平市| 房山区| 隆德县| 黔西| 吴川市| 池州市| 霍山县| 锡林浩特市| 交城县| 河西区| 惠来县| 江津市| 阿拉善右旗| 车险| 临武县| 德惠市| 吉木萨尔县| 巫溪县| 吴桥县| 扬州市| 龙川县|