前端代理模式

在实际开发中,有的时候图片可能会很大,这个时候我们可能需要先将图片的位置用loading图片来占位,然后我们再去替换为真正要展示的图片。也就是我们看到正在loading的图片的时候,背后却在加载图片,等到图片加载好之后放上去。在这个例子中代理就是用来在后面加载图片,等到加载好之后就可以直接替换了。

let myImage = (function(){
    let img = new Image
    document.body.appendChild(img)
    return {
        setSrc:(src)=>{
            img.src = src
        }
    }
})()
let imgProxy =(function(){
    let imgProxy = new Image
    // 这个地方我使用了setTimeout来增强演示效果,否则本地加载太快,根本看不到。
    imgProxy.onload=function(){
        setTimeout(()=>{
            myImage.setSrc(this.src)
        },2000)
    }
    
    return (src)=>{
        myImage.setSrc("loading.jpg")  // 先加载默认图片
        imgProxy.src=src
    }
})()

imgProxy("../../img/background-cover.jpg")
  • 使用代理就可以实现对于页面的背后加载,这个是对于图片加载很慢的时候使用的方法,但是如果我们发现图片直接加载的速度很高的时候我可以直接使用myImg中的方法。

  • 其实我们也是解耦的思想,如果没有代理,原来的方法依然可以正常使用。对于上面那个送花的一样道理,就是说如果A一直处于心情好的状态,那么我们就不需要进行心情的监督了,所以说就可以直接将target定位A了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容