摘要:小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(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 一處即可。
兼容處理多了之后我們會(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
摘要:小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。關(guān)于單個(gè)如何兼容,微信官方提供了兼容文檔,因此我們這里不再贅述。下面主要討論在整個(gè)項(xiàng)目如何優(yōu)雅地處理兼容問題。 小程序的功能不斷的增加,但是舊版本的微信客戶端并不支持新功能,所以在使用這些新能力的時(shí)候需要做兼容。 showImg(https://segmentfault.com/img/...
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 - 微信小程...
摘要:和都是輔助小程序開發(fā)的開源庫,本文對(duì)兩者做個(gè)對(duì)比。微信的這種限制決定了小程序一般只是用于實(shí)現(xiàn)核心功能,不會(huì)用作復(fù)雜功能。在筆者了解的很多小程序,甚至大都是用原生開發(fā)的。 grace和wepy都是輔助小程序開發(fā)的開源庫,本文對(duì)兩者做個(gè)對(duì)比。 注:本文是作者本人的一些拙見,純粹的技術(shù)討論,不想引起技術(shù)信仰之爭,歡迎積極、正向的討論及建議。 如果你還不了解Grace, 請(qǐng)參考:微信小程序開發(fā)...
摘要:目前,常用的模塊規(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)境、...
閱讀 3300·2023-04-25 18:03
閱讀 1157·2021-11-15 11:38
閱讀 5570·2021-10-25 09:45
閱讀 851·2021-09-24 09:48
閱讀 2309·2021-09-22 15:34
閱讀 1747·2019-08-30 15:44
閱讀 2690·2019-08-30 13:12
閱讀 612·2019-08-29 16:05