Bootstrap

JavaScript常见代理模式之图片预加载

在WEB开发中,图片预加载是一种常用的技术,如果直接给某个img标签节点设置src属性,由于图片过大或者网络不佳,图片的位置往往有段时间会是一片空白。常见的作法是先用一张loading图片作为占位符,然后用异步的方式来加载图片,等到图片加载完毕,我们再把它填充到img的节点里。这种场景很适合使用虚拟代理。

首先创建一个普通的本体对象,这个对象负责往页面中创建一个img标签,并且提供一个对外的setSrc接口,外界调用这个接口,便可以给该img标签设置src属性:

let myImage = (function() {
   
    let imgNode = document.createElement('img');
    document.body.appendChild(imgNode);
    return {
   
        setSrc: function (src) {
   
            imgNode.src = src;
        }
    }
})();

然后引入代理对象proxyImage ,通过这个代理对象,在图片被真正加载完成之前,页面中将出现一个占位的gif图,来表示图片正在加载。

let pr
;