您好,登錄后才能下訂單哦!
今天小編給大家分享一下微信小程序拼接圖片鏈接無底洞問題怎么解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
背景
由于小程序包大小限制,我們一般都會將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>
以上就是“微信小程序拼接圖片鏈接無底洞問題怎么解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。