微信小程序拼接圖片鏈接無(wú)底洞深入探究
背景
由于小程序包大小限制,我們一般都會(huì)將icon存放到cdn上?,F(xiàn)在的開發(fā)流程需要在開發(fā)測(cè)試環(huán)境下圖片使用開發(fā)域名,線上使用生產(chǎn)域名。
問(wè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: '' } })
在頁(yè)面中:./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>
圖片渲染出來(lái)了,但是在開發(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ò)信息,說(shuō)本地不存在/4jZ1L1qECEOsikW2JKsyHQ==/109951164304393164.jpg這個(gè)文件。 也就是說(shuō)頁(yè)面在執(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è)方法來(lái)配置圖片
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
50行代碼實(shí)現(xiàn)Webpack組件使用次數(shù)統(tǒng)計(jì)
這篇文章主要介紹了50行代碼實(shí)現(xiàn)Webpack組件使用次數(shù)統(tǒng)計(jì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
這篇文章主要介紹了JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()的相關(guān)資料,需要的朋友可以參考下2016-08-08JavaScript實(shí)現(xiàn)多欄目切換效果
在網(wǎng)站開發(fā)中尤其是新聞?lì)惥W(wǎng)站,經(jīng)常遇到多欄目切換的設(shè)計(jì),這種效果有很多種實(shí)現(xiàn)效果,現(xiàn)在記錄一種很簡(jiǎn)單的寫法2016-12-12Extjs 中的 Treepanel 實(shí)現(xiàn)菜單級(jí)聯(lián)選中效果及實(shí)例代碼
這篇文章主要介紹了Extjs 中 Treepanel 實(shí)現(xiàn)菜單級(jí)聯(lián)選中效果,需要的朋友可以參考下2017-08-08js 圖片隨機(jī)不定向浮動(dòng)的實(shí)現(xiàn)代碼
這篇文章介紹了js圖片隨機(jī)不定向浮動(dòng)的實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-07-07WordPress中利用AJAX異步獲取評(píng)論用戶頭像的方法
這篇文章主要介紹了WordPress中利用AJAX異步獲取評(píng)論用戶頭像的方法,文中的例子是輸入郵箱即可獲取頭像,需要的朋友可以參考下2016-01-01