在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