智慧小程式檔案館——版本相容

百度智慧小程式學院發表於2018-10-18

我們在進行小程式開發時,不可避免的需要根據不同版本,進行相容性處理,可是有百度APP的版本,有swan.js的版本,TA們之間到底有什麼樣的關係,我們又要如何做版本相容呢?今天的文章,將帶領我們一起去探索答案~

百度APP版本 和 swan.js版本的區別和關聯

首先,百度智慧小程式版本相關有百度APP版本和swan.js版本兩個概念。

  • 百度APP版本就是app本身的版本;

  • swan.js版本是百度智慧小程式前端框架的版本,以客戶端版本為主,這兩者有規定的對映關係。

作為開發者,我們只需要關注 swan.js即可哦~

這裡把百度APP的四位版本定義為a.b.c.d,swan.js的三位版本定義為x.y.z

在“11.0.x.x”的百度APP版本之前,swan.js版本的第一位與APP版本相差9,即:x=a-9

第二位與APP版本相同即:y=b。

第三位隨版本遞增。具體對映如下表:

百度APP版本swan.js版本
10.12.x.x1.12.x
10.13.x.x1.13.x

在“11.0.x.x”的百度APP版本之後,對映關係改為swan.js版本的第一位保持不變:x=a-9

第二位變為百度APP版本的第二位乘10加第三位即:y=b*10+c。

第三位隨版本遞增。具體對映如下表:

百度APP版本swan.js版本
11.0.5.x2.5.x
11.5.5.x2.55.x


如何相容

大多數需要相容的場景有如下兩種,下面會列出解決方法。
1、相容判斷當前環境是否能使用某一API或某一元件或某一元件屬性; 下文簡稱第一種場景。

2、某一API或某一元件屬性在一個版本的返回值或表現與官方文件不一致;下文簡稱第二種場景。

針對第一種場景

可以通過canIUse或getSystemInfo方法判斷想要使用的API或元件屬性在當前環境是否可用。

具體操作如下所示:

1、使用canIUse

canIUse是非常建議大家使用的一種方法 ,一般是針對小程式框架本身的,用來判斷智慧小程式的API、回撥、引數、元件和元件屬性等是否在當前版本可用:

// 判斷scroll-view元件的scroll-x屬性在當前版本能否使用
if (swan.canIUse('scroll-view.scroll-x')) {
// 支援時的程式碼邏輯...
}
else {
// 不支援時的程式碼邏輯...
}複製程式碼
2、使用getSystemInfo或getSystemInfoSync

getSystemInfo可以獲取系統資訊,包括百度APP版本和swan.js版本,通過獲取當前swan.js版本和想要使用的API或元件屬性支援的版本進行比對,總而得到是否可用的結論。

// swan.request要求swan.js版本大於1.8.5,獲取當前swan.js版本後比對
if (swan.getSystemInfoSync().SDKVersion > '1.8.5') {
// 支援時的程式碼邏輯...
}
else {
// 不支援時的程式碼邏輯... 
}複製程式碼

針對第二種場景

若發現在某一swan.js版本API的返回或元件的表現與官方文件不一致,那可能是我們的bug,請儘快反饋給我們。

在我們解決上線之前,有些問題開發者們可以通過使用上面getSystemInfo或getSystemInfoSync方法獲取版本,比對是否是有問題的版本來做一些相容處理。

例如:API返回資料物件的key不統一或返回資料的型別不統一等。

下面假設uploadFile進度回撥中的progress屬性在swan.js的1.10.12版本中傳回是string型別,而不是官方文件上標註的number型別時可以這麼處理:

const uploadTask = swan.uploadFile({
   url: 'https://smartprogram.baidu.com/xxx', //開發者伺服器 url
   filePath: res.tempFilePaths[0], // 要上傳檔案資源的路徑
   name: 'myfile'
});

uploadTask.onProgressUpdate(res => {
   let progress = res.progress;
   // 判斷如果是1.10.12版本,轉換一下型別
   if ('1.10.12' === swan.getSystemInfoSync().SDKVersion) {
       progress = +progress;
   }
   // 拿到獲取的progress做的一系列操作...
});複製程式碼


相關文章