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

 更新时间:2022年12月22日 09:58:03   作者:qb  
这篇文章主要为大家介绍了代理模式在vue中的使用示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

当本体处于保护、缓存、虚拟或者过滤等情况下时,一个数据不适合被访问或者一个方法不能被直接调用,可以采用代理模式,先创建一个代理(本体对象或者方法的替身),作为访问者和本体之间的中介或者桥梁。

本体访问和代理访问的区别

不使用代理:访问 ==> 本体

使用代理:访问 ==> 代理 ==> 本体

1、图片预加载

// 本体
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( '预加载的图片' ); 
            img.src = src;
        } 
    } 
})();

以上是本体和代理,都有相同的接口setSrc,有以下两种访问方式:

  • 直接访问本体
myImage.setSrc("目标图片地址")

如果网速不太好,直接访问本体,那么会出现图片一截一截出现的情况。

  • 访问代理对象
proxyImage.setSrc("目标图片地址")

如果网速不太好,可以先显示默认的loading图,给用户以预期。当目标图片加载完成的时候,再将当前的loading图换成目标图片地址。

2、缓存代理

// 本体计算乘积
var mult = function(){
    var a = 1; 
    for ( var i = 0, l = arguments.length; i < l; i++ ){ 
        a = a * arguments[i]; 
    } 
    return a; 
}; 
// 代理计算乘积
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 ); 
    } 
})(); 

以上是本体和代理,都可以通过传递参数计算乘积,有以下两种访问方式:

  • 本体计算乘积
console.log(mult( 1, 2, 3, 4 )); // 24

计算会得出24的乘积,如果再次计算会再次进行计算,如果数据量比较大的话,会重复计算;

  • 代理计算乘积
console.log(proxyMult( 1, 2, 3, 4 )); // 24

第一次计算会计算出24的乘积,并将其存到cache中,如cache["1,2,3,4"] = 24,第二次计算的时候,发现cache中有键为"1,2,3,4"的乘积,无需重复计算,直接返回。

3、跨域代理

在日常开发vue项目的过程中,会和后端进行接口的联调。

如果我们直接访问后端接口,可能会出现跨域的问题。

我们可以通过配置webpackdevServer配置,先访问本地的代理服务器,代理服务器去访问后端服务器。因为,服务器访问服务器没有跨域的说法,所以,通过本地代理服务器作为中介,我们就实现了前端访问后端接口的目的。

总结

在代理模式中本体和代理有着相同的访问接口或者执行后有同样的效果,那么,开发前无需刻意进行代理模式的预测,当需要的时候再去对本体进行代理功能的编写。根据功能的不同,代理模式又可分为,缓存代理、防火墙代理、保护代理和跨域代理等模式。

以上就是代理模式在vue中的使用示例解析的详细内容,更多关于vue 代理模式的资料请关注脚本之家其它相关文章!

相关文章

  • Elementui el-input输入框校验及表单校验实例代码

    Elementui el-input输入框校验及表单校验实例代码

    输入框是使用非常多的元素,用来输入用户名、密码等等信息,Element提供了功能和样式丰富的输入框,下面这篇文章主要给大家介绍了关于Elementui el-input输入框校验及表单校验的相关资料,需要的朋友可以参考下
    2023-06-06
  • Vue组件间数据传递的方式(3种)

    Vue组件间数据传递的方式(3种)

    这篇文章主要介绍了Vue组件间数据传递的方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Vue祖孙组件如何实现传值

    Vue祖孙组件如何实现传值

    这篇文章主要介绍了Vue祖孙组件如何实现传值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 解决vue页面渲染但dom没渲染的操作

    解决vue页面渲染但dom没渲染的操作

    这篇文章主要介绍了解决vue页面渲染但dom没渲染的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 在vue项目中使用axios发送post请求出现400错误的解决

    在vue项目中使用axios发送post请求出现400错误的解决

    这篇文章主要介绍了在vue项目中使用axios发送post请求出现400错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • 浅谈vue的iview列表table render函数设置DOM属性值的方法

    浅谈vue的iview列表table render函数设置DOM属性值的方法

    下面小编就为大家带来一篇浅谈vue的iview列表table render函数设置DOM属性值的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 关于elementUI select控件绑定多个值(对象)

    关于elementUI select控件绑定多个值(对象)

    这篇文章主要介绍了关于elementUI select控件绑定多个值(对象),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 详解vue-cli中配置sass

    详解vue-cli中配置sass

    本篇文章主要介绍了详解vue-cli中配置sass ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • vue中watch监听不到变化的解决

    vue中watch监听不到变化的解决

    本文主要介绍了vue中watch监听不到变化的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • vue2实现传送门效果的示例

    vue2实现传送门效果的示例

    本文主要介绍了vue2实现传送门效果的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论