小程序模板網(wǎng)

微信小程序開發(fā),如何優(yōu)雅地兼容

發(fā)布時(shí)間:2018-09-20 08:51 所屬欄目:小程序開發(fā)教程

 

關(guān)于單個(gè) API 如何兼容,微信官方提供了兼容文檔,因此我們這里不再贅述。
下面主要討論在整個(gè)項(xiàng)目如何優(yōu)雅地處理兼容問(wèn)題。

問(wèn)題

如果在每處需要兼容的地方都寫上一堆兼容相關(guān)的代碼,隨著代碼量增加,會(huì)出現(xiàn)以下問(wèn)題:

  • 代碼難以閱讀
  • 兼容方案有變動(dòng)時(shí),需要改動(dòng)多處
  • 隨著時(shí)間推移,你的代碼才是最需要并且是最難兼容的

思考

最理想的情況是不需要任何兼容處理,因此可以反推出兼容性處理的代碼并不是代碼正常流程中的一部分,基于此:

  • 兼容的細(xì)節(jié)不必暴露
  • 兼容的方案應(yīng)該統(tǒng)一
  • 兼容的方案可方便地變動(dòng)

解決方案

1.將兼容方案隱藏,對(duì)外提供接口即可

比如 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 一處即可。

2.兼容的處理還有共性可以抽象

兼容處理多了之后我們會(huì)發(fā)現(xiàn),對(duì)兼容所做的處理無(wú)非兩方面:

  • 支持該方法時(shí),直接使用對(duì)應(yīng)方法
  • 不支持該方法時(shí),做一些兼容處理

因此這種模式我們又可以抽離出來(lái),這樣做當(dāng)然有一些好處:

  • 減少重復(fù)代碼
  • 做一些共性的處理時(shí),我們又只用改動(dòng)一處(比如當(dāng)不兼容官方 API 時(shí)加上對(duì)應(yīng)統(tǒng)計(jì),用于分析當(dāng)前應(yīng)用跨版本的情況)

比如我們抽離出這樣一個(gè)簡(jiǎn)單的 compatible.js 用于處理兼容時(shí)的共性問(wèn)題:

之前的 showLoading.js 我們可以這樣寫:

簡(jiǎn)單吧 :),這種寫法的意思是兼容時(shí)正常展示 loading 即可,不兼容時(shí)則不展示。

當(dāng)然可能有完美主義者會(huì)覺(jué)得『怎么能不展示呢?我就是要展示!』 那么我們可以這樣寫:

用 wx.showToast 偽造了一個(gè) showLoading。

3.文件組織

兼容性的文件可能會(huì)越來(lái)越多,對(duì)于我這種有收拾的人,看到所有東西散亂地扔在一個(gè)抽屜里肯定是不能忍的...
因此我們可以多用幾個(gè)小盒子把它們分門別類地裝起來(lái)。小盒子怎么選呢?其實(shí)官方已經(jīng)給出了答案,官方 API 是按照不同的功用分組的,因此我們拿分組當(dāng)『盒子』即可。
最終的文件組織像這樣:



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉(cāng)庫(kù):starfork
本文地址:http://22321a.com/wxmini/doc/course/24827.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢