今天小编给大家分享一下微信小程序拼接图片链接无底洞问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
背景
由于小程序包大小限制,我们一般都会将icon存放到cdn上。现在的开发流程需要在开发测试环境下图片使用开发域名,线上使用生产域名。
问题重现
在小程序onLaunch的时候读取配置文件获取当前环境,并得到开发环境图片域名:
./app.js
const { imgHostDev, imgHostProd, env } = require('./app.config.js')
App({
onLaunch: function () {
this.globalData.imageHost = env == 'dev' ? imgHostDev : imgHostProd
},
globalData: {
imageHost: ''
}
})
在页面中:./pages/index/index.js
const app = getApp()
Page({
data: {
imgHost: ''
},
onLoad: function () {
this.setData({
imgHost: app.globalData.imageHost
})
}
})
./pages/index/index.wxml
<image src="{{imgHost}}/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg" mode="aspectFit"></image>
图片渲染出来了,但是在开发者工具中有报错
VM1334:1 Failed to load local image resource /4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg
the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error)
手机预览就看不到图片。。。
分析
看一下报错信息,说本地不存在/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg这个文件。 也就是说页面在执行onLoad之前就已经渲染了,这个时候imgHost值为空字符串,image的src拿到的图片链接就是/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg,image标签就以为这是本地图片导致的。
修复
当然修复的方法有很多,
可以将imgHost在初始化的时候就赋值:
const app = getApp()
Page({
data: {
imgHost: app.globalData.imageHost
},
onLoad: function () {
}
})
也可以在标签中做判断
<image src="{{imgHost ? imgHost + '/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg' : ''}}" mode="aspectFit"></image>
以上就是“微信小程序拼接图片链接无底洞问题怎么解决”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注天达云行业资讯频道。