您好,登錄后才能下訂單哦!
這篇文章主要介紹“微信小程序兼容性問題怎么解決”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“微信小程序兼容性問題怎么解決”文章能幫助大家解決問題。
微信小程序運行在三端:iOS、Android 和 用于調試的開發者工具。
三端的腳本執行環境以及用于渲染非原生組件的環境是各不相同的:
在 iOS 上,小程序的 javascript 代碼是運行在 JavaScriptCore 中,是由 WKWebView 來渲染的,環境有 iOS8以上
在 Android 上,小程序的 javascript 代碼是通過 X5 JSCore來解析,是由 X5 基于 Mobile Chrome 53/57 內核來渲染的
在 開發工具上, 小程序的 javascript 代碼是運行在 nwjs 中,是由 Chrome Webview 來渲染的
}, 盡管三端的環境是十分相似的,但是還是有些許區別:
ES6 語法支持不一致 語法上開發者可以通過開啟 ES6 轉 ES5 的功能來規避。
wxss 渲染表現不一致 盡管可以通過開啟樣式補全來規避大部分的問題,還是建議開發者需要在 iOS 和 Android 上分別檢查小程序的真實表現。
在 0.10.101000 以及之后版本的開發工具中,會默認使用 babel 將開發者 ES6 語法代碼轉換為三端都能很好支持的 ES5 的代碼,幫助開發者解決環境不同所帶來的開發問題。
開啟此選項,開發工具會自動檢測并補全缺失樣式,保證在低版本系統上的正常顯示。盡管可以規避大部分的問題 ,還是建議開發者需要在 iOS 和 Android 上分別檢查小程序的真實表現。
小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時候需要做兼容。
文檔會在組件,API等頁面描述中帶上各個功能所支持的版本號。
可以通過 wx.getSystemInfo 或者 wx.getSystemInfoSync 獲取到小程序的基礎庫版本號。
可以通過 wx.canIUse 來判斷是否可以在該基礎庫版本下直接使用對應的API或者組件
同步
let res = wx.getSystemInfoSync()console.log("同步獲取系統信息:" + res);console.log(res);
異步:
wx.getSystemInfo({success: function(res) {console.log("異步獲取系統信息:");console.log(res);},})
微信客戶端和小程序基礎庫的版本號風格為 Major.Minor.Patch(主版本號.次版本號.修訂號)。 開發者可以根據版本號去做兼容
function compareVersion(v1, v2) {v1 = v1.split('.')v2 = v2.split('.')var len = Math.max(v1.length, v2.length) while (v1.length < len) {v1.push('0')}while (v2.length < len) {v2.push('0')} for (var i = 0; i < len; i++) {var num1 = parseInt(v1[i])var num2 = parseInt(v2[i]) if (num1 > num2) {return 1} else if (num1 < num2) {return -1}} return 0} compareVersion('1.11.0', '1.9.9')// 1
該基礎庫版本下直接使用對應的API或者組件的API
wx.canIUse(String)判斷小程序的API,回調,參數,組件等是否在當前版本可用。此接口從基礎庫 1.1.1 版本開始支持。
String參數說明: 使用{API}.{method}.{param}.{options}或者{component}.{attribute}.{option}方式來調用,例如:
{API} 代表 API 名字 {method} 代表調用方式,有效值為return, success, object, callback {param} 代表參數或者返回值 {options} 代表參數的可選值 {component} 代表組件名字 {attribute} 代表組件屬性 {option} 代表組件屬性的可選值
例子:
wx.canIUse('openBluetoothAdapter')wx.canIUse('getSystemInfoSync.return.screenWidth')wx.canIUse('getSystemInfo.success.screenWidth')wx.canIUse('showToast.object.image')wx.canIUse('onCompassChange.callback.direction')wx.canIUse('request.object.method.GET') wx.canIUse('live-player')wx.canIUse('text.selectable')wx.canIUse('button.open-type.contact')
微信小程序的兼容性問題除了微信本身的 Bug 外,大部分是目標平臺對 JavaScript 標準庫支持程度不同造成的。像我最上面遇到的問題就是Javascript 標準庫兼容性問題。對于這類問題我們可以打補丁,從其他地方找到比較完善的js代碼,然后我們拷貝到我們的項目中。
關于“微信小程序兼容性問題怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。