在小程序剛出來的時候,我寫過一些小程序的demo,而如今小程序已然成為一個非常活躍的平臺。小程序里面的內容包羅萬象之余,又有著H5所不具備的“性能優勢”。“能不能讓我們從頭來過”,重新認識小程序。小程序和快應用類似,只不過說,小程序面向的是微信平臺,支持ios和安卓。而快應用只支持安卓。出于用戶流量和兼容性的特點,快應用并不被看好。支付寶,百度小程序以及快應用都是同樣的實現原理。
小程序與PWA的異同點
相同點
- 緩存機制
- 原生接口(支付,定位等)
不同點
- PWA支持接口緩存
- 小程序沒有BOM和DOM,PWA本身就是網頁
- 小程序屬于混合技術,PWA純網頁技術
- 小程序限制太多, PWA沒有限制
- 小程序需要部署在騰訊服務器,PWA和原來網站保持一致
- 小程序兼容性較好,大家用的基本上是新版微信,PWA兼容性不好
小程序與weex的異同點
相同點
- 同樣沒有BOM和DOM
不同點
- 小程序部分多媒體組件是原生組件映射,weex全部是原生組件
更新機制
小程序運作機制有兩種,“冷啟動”和“熱啟動”。冷啟動即是進程已經結束,小程序完全重新啟動。熱啟動則是進程未被回收,打開上次的使用狀態。
更新機制會在冷啟動開啟過程中,同時檢測是否有新版本的內容,如果有,則異步下載新版本的代碼包,啟動該程序。即新版本的小程序需要等下一次冷啟動才會應用上。 這一點和PWA的機制類似。
caniuse
可以說現在小程序的發展真的是超出任何人的想象。小程序的四大平臺包括了騰訊,支付寶,百度和頭條。
各種新的功能層出不窮。說到新功能,就要考慮到兼容性的問題。雖然說微信版本的更新率很高,最新版本的小程序基礎庫可以達到89%,接近90%。所以一些有趣的新功能可以大膽考慮使用。如果你身在大廠或者二廠,肯定要考慮到如何兼容老微信的問題。
如果你是個謹慎的前端開發工程師,在使用瀏覽器新特性語法前,可能會有習慣去https://caniuse.com/
查詢瀏覽器的兼容性,如果兼容性不能滿足你的要求,polyfill(墊片)是你需要考慮的內容。同理,騰訊也推出了一個API,叫做wx.canIUse
。使用方法非常簡單,只需要傳個字符串。
使用
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')
wx.canIUse
能區別判斷你的一些方法邏輯,做到一些兼容處理。當然,你也可以在小程序的后臺設置兼容的最低版本,這時候,一些舊版本的微信就無法顯示你的微信小程序并提示升級微信。你在這么做之前,要支會你的產品同時。
兼容性
兼容性問題主要出在基礎庫的版本問題,它是和微信的版本掛鉤的,有些剛出的api不建議使用。相信很多人還是會使用小游戲后的微信版本。
題外話
shopee,又稱蝦皮,是一家騰訊投資的跨境電商平臺。這里加班少,技術氛圍好。如果想和我并肩作戰一起學習,可以找我內推。郵箱weiping.xiang@shopee.com,非誠勿擾。