小程序的功能不斷的增長,可是舊版本的微信客戶端並不支持新功能,因此在使用這些新能力的時候須要作兼容。
關於單個 API 如何兼容,微信官方提供了兼容文檔,所以咱們這裏再也不贅述。
下面主要討論在整個項目如何優雅地處理兼容問題。html
若是在每處須要兼容的地方都寫上一堆兼容相關的代碼,隨着代碼量增長,會出現如下問題:小程序
最理想的狀況是不須要任何兼容處理,所以能夠反推出兼容性處理的代碼並非代碼正常流程中的一部分,基於此:微信
好比 wx.showLoading
是在 1.1.0 版本以後才提供的,對於以前的版本須要兼容。
咱們選擇將其放在 show-loading.js
中,內部進行兼容性相關處理,並對外提供 showLoading
方法。
這樣調用者只需調用 showLoading
方法便可,不用考慮兼容性的問題,並且若是兼容的方式有變更,只需改動 show-loading.js
一處便可。spa
兼容處理多了以後咱們會發現,對兼容所作的處理無非兩方面:code
所以這種模式咱們又能夠抽離出來,這樣作固然有一些好處:htm
好比咱們抽離出這樣一個簡單的 compatible.js
用於處理兼容時的共性問題:接口
以前的 showLoading.js
咱們能夠這樣寫:圖片
簡單吧 :),這種寫法的意思是兼容時正常展現 loading
便可,不兼容時則不展現。ip
固然可能有完美主義者會以爲『怎麼能不展現呢?我就是要展現!』 那麼咱們能夠這樣寫:文檔
用 wx.showToast
僞造了一個 showLoading
。
兼容性的文件可能會愈來愈多,對於我這種有收拾的人,看到全部東西散亂地扔在一個抽屜裏確定是不能忍的...
所以咱們能夠多用幾個小盒子把它們分門別類地裝起來。小盒子怎麼選呢?其實官方已經給出了答案,官方 API 是按照不一樣的功用分組的,所以咱們拿分組當『盒子』便可。
最終的文件組織像這樣: