關(guān)于單個(gè) API 如何兼容,微信官方提供了兼容文檔,因此我們這里不再贅述。
下面主要討論在整個(gè)項(xiàng)目如何優(yōu)雅地處理兼容問(wèn)題。
如果在每處需要兼容的地方都寫上一堆兼容相關(guān)的代碼,隨著代碼量增加,會(huì)出現(xiàn)以下問(wèn)題:
最理想的情況是不需要任何兼容處理,因此可以反推出兼容性處理的代碼并不是代碼正常流程中的一部分,基于此:
比如 wx.showLoading 是在 1.1.0 版本之后才提供的,對(duì)于之前的版本需要兼容。
我們選擇將其放在 show-loading.js 中,內(nèi)部進(jìn)行兼容性相關(guān)處理,并對(duì)外提供 showLoading 方法。
這樣調(diào)用者只需調(diào)用 showLoading 方法即可,不用考慮兼容性的問(wèn)題,而且如果兼容的方式有變動(dòng),只需改動(dòng) show-loading.js 一處即可。
兼容處理多了之后我們會(huì)發(fā)現(xiàn),對(duì)兼容所做的處理無(wú)非兩方面:
因此這種模式我們又可以抽離出來(lái),這樣做當(dāng)然有一些好處:
比如我們抽離出這樣一個(gè)簡(jiǎn)單的 compatible.js 用于處理兼容時(shí)的共性問(wèn)題:
之前的 showLoading.js 我們可以這樣寫:
簡(jiǎn)單吧 :),這種寫法的意思是兼容時(shí)正常展示 loading 即可,不兼容時(shí)則不展示。
當(dāng)然可能有完美主義者會(huì)覺(jué)得『怎么能不展示呢?我就是要展示!』 那么我們可以這樣寫:
用 wx.showToast 偽造了一個(gè) showLoading。
兼容性的文件可能會(huì)越來(lái)越多,對(duì)于我這種有收拾的人,看到所有東西散亂地扔在一個(gè)抽屜里肯定是不能忍的...
因此我們可以多用幾個(gè)小盒子把它們分門別類地裝起來(lái)。小盒子怎么選呢?其實(shí)官方已經(jīng)給出了答案,官方 API 是按照不同的功用分組的,因此我們拿分組當(dāng)『盒子』即可。
最終的文件組織像這樣:
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)