成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

RdouTyping / 3296人閱讀

摘要:小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。關(guān)于單個(gè)如何兼容,微信官方提供了兼容文檔,因此我們這里不再贅述。下面主要討論在整個(gè)項(xiàng)目如何優(yōu)雅地處理兼容問題。

小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。

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

問題

如果在每處需要兼容的地方都寫上一堆兼容相關(guān)的代碼,隨著代碼量增加,會(huì)出現(xià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 方法即可,不用考慮兼容性的問題,而且如果兼容的方式有變動(dòng),只需改動(dòng) show-loading.js 一處即可。

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

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

支持該方法時(shí),直接使用對(duì)應(yīng)方法

不支持該方法時(shí),做一些兼容處理

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

減少重復(fù)代碼

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

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

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

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

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

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

3.文件組織

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/97856.html

相關(guān)文章

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

    摘要:小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。關(guān)于單個(gè)如何兼容,微信官方提供了兼容文檔,因此我們這里不再贅述。下面主要討論在整個(gè)項(xiàng)目如何優(yōu)雅地處理兼容問題。 小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。 showImg(https://segmentfault.com/img/...

    stonezhu 評(píng)論0 收藏0
  • 微信小程資源匯總

    awesome-github-wechat-weapp 是由OpenDigg整理并維護(hù)的微信小程序開源項(xiàng)目庫集合。我們會(huì)定期同步上的項(xiàng)目到這里,也歡迎各位 UI組件開發(fā)框架實(shí)用庫開發(fā)工具服務(wù)端項(xiàng)目實(shí)例Demo UI組件 weui-wxss ★1873 - 同微信原生視覺體驗(yàn)一致的基礎(chǔ)樣式庫zanui-weapp ★794 - 好用易擴(kuò)展的小程序 UI 庫wx-charts ★449 - 微信小程...

    Olivia 評(píng)論0 收藏0
  • 微信小程開發(fā)庫grace vs wepy

    摘要:和都是輔助小程序開發(fā)的開源庫,本文對(duì)兩者做個(gè)對(duì)比。微信的這種限制決定了小程序一般只是用于實(shí)現(xiàn)核心功能,不會(huì)用作復(fù)雜功能。在筆者了解的很多小程序,甚至大都是用原生開發(fā)的。 grace和wepy都是輔助小程序開發(fā)的開源庫,本文對(duì)兩者做個(gè)對(duì)比。 注:本文是作者本人的一些拙見,純粹的技術(shù)討論,不想引起技術(shù)信仰之爭,歡迎積極、正向的討論及建議。 如果你還不了解Grace, 請(qǐng)參考:微信小程序開發(fā)...

    james 評(píng)論0 收藏0
  • 你不知道的h5

    摘要:目前,常用的模塊規(guī)范主要有兩種和。攔截全局請(qǐng)求一直接引入腳本攔截需要的回調(diào)或函數(shù)。深刻知道一個(gè)良好的命名規(guī)范的重要性,同時(shí)在項(xiàng)目中也會(huì)遇到一些命名的瓶頸。 基于 Three.js 的超快的 3D 開發(fā)框架:Whitestorm.js Whitestorm.js 是一款基于 Three.js 超快的 Web 應(yīng)用 3D 開發(fā)框架。它為普通的 Three.js 任務(wù)提供封裝、使搭建環(huán)境、...

    IntMain 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<