微信小程序拼接圖片鏈接無底洞深入探究
背景
由于小程序包大小限制,我們一般都會(huì)將icon存放到cdn上。現(xiàn)在的開發(fā)流程需要在開發(fā)測試環(huán)境下圖片使用開發(fā)域名,線上使用生產(chǎn)域名。
問題重現(xiàn)
在小程序onLaunch的時(shí)候讀取配置文件獲取當(dāng)前環(huán)境,并得到開發(fā)環(huán)境圖片域名:
./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>
圖片渲染出來了,但是在開發(fā)者工具中有報(bào)錯(cuò)
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)
手機(jī)預(yù)覽就看不到圖片。。。
分析
看一下報(bào)錯(cuò)信息,說本地不存在/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg這個(gè)文件。 也就是說頁面在執(zhí)行onLoad之前就已經(jīng)渲染了,這個(gè)時(shí)候imgHost值為空字符串,image的src拿到的圖片鏈接就是/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg,image標(biāo)簽就以為這是本地圖片導(dǎo)致的。
修復(fù)
當(dāng)然修復(fù)的方法有很多,
可以將imgHost在初始化的時(shí)候就賦值:
const app = getApp()
Page({
data: {
imgHost: app.globalData.imageHost
},
onLoad: function () {
}
})
也可以在標(biāo)簽中做判斷
<image src="{{imgHost ? imgHost + '/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg' : ''}}" mode="aspectFit"></image>
更多嘗試
之前都是渲染網(wǎng)絡(luò)圖片,如果讀取本地圖片更換不同文件夾中的同名圖片呢?發(fā)現(xiàn)也是如此。
如果圖片鏈接里有多個(gè)變量,就建議在wxs文件中寫一個(gè)方法來配置圖片
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。
相關(guān)文章
基于BootStrap Metronic開發(fā)框架經(jīng)驗(yàn)小結(jié)【五】Bootstrap File Input文件上傳插件的用法
本文主要基于我自己的框架代碼案例,介紹其中文件上傳插件File Input的使用,非常具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05
HTML+JS模擬實(shí)現(xiàn)QQ下拉菜單效果
這篇文章主要為大家詳細(xì)介紹了如何利用HTML+JavaScript模擬實(shí)現(xiàn)QQ中的下拉菜單效果。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-05-05
利用momentJs做一個(gè)倒計(jì)時(shí)組件(實(shí)例代碼)
這篇文章主要介紹了利用momentJs做一個(gè)倒計(jì)時(shí)組件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
淺談JavaScript函數(shù)參數(shù)的可修改性問題
這篇文章主要是對JavaScript函數(shù)參數(shù)的可修改性進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-12-12

