最近做H5开发遇到个问题,为了防止页面打开时,出现大图加载缓慢的情况,写了一个图片资源管理器,今天顺便实现了一下小程序版。
特别说明一下,小程序由于资源包大小限制,很多图片资源会存放到CND图片服务器上,为了实现小程序初始化时按需加载远程图片资源,实现了以下加载器,希望能解决部分小程序新人开发者预加载图片的苦恼。
特别强调:
本加载器为初级版本,暂未研究其他实现方式,当前实现方式需要在微信公众平台->设置->downloadFile合法域名,中添加想要加载的图片所在服务器合法域名。
原理介绍:
使用小程序自带API读取远程图片资源:
wx.getImageInfo({
src: 'images/a.jpg',
success: function (res) {
console.log(res.width)
console.log(res.height)
}
})
这个接口可以创建图片组件对象并返回图片加载状态。
加载器用法:
1、在app.js的同级目录下创建一个ImageSource.js作为图片资源的路径管理文件(可以根据情况改为其他文件名称)。
2、在utils文件夹下放入ImageLoader.js或ImageLoader.min.js(附件)。
3、根据需要在对应的文件中创建ImageLoader对象(看下文)。
使用示例:
1、载入文件:
const ImageLoader = require('./utils/ImageLoader.min.js');
const ImageSource = require('./imageSource.js');
ImageLoader.min.js 为加载器源文件。
imageSource.js 为图片资源路径文件。
2、创建ImageLoader对象。
new ImageLoader({
base: ImageSource.BASE,
source: [ImageSource],
loading: res => {
// 可以做进度条动画
console.log(res);
},
loaded: res => {
// 可以加载完毕动画
console.log(res);
}
});
参数
base : String 图片资源的基础路径 必填 示例: "https://image.example.com/static/images/"
source : Array 需要预加载的图片资源 必填 示例: