微信推出小程序平臺以來,國內(nèi)各大公司陸續(xù)跟進(jìn),帶來了小程序的繁榮。從開發(fā)者的視角,我們看到小程序開發(fā)者變多,各種小程序技術(shù)方案不斷出現(xiàn)。
- 小程序增強(qiáng)型開發(fā)框架的出現(xiàn)
- 小程序原生框架能力擴(kuò)充,典型的有 wepy/mpvue
- 小程序跨端開發(fā)框架的出現(xiàn)
* 通過編寫一套代碼,實(shí)現(xiàn)多個小程序平臺運(yùn)行,典型的有 taro/uniapp- 小程序與 web/native(app)融合的技術(shù)需求出現(xiàn)
* 因 小程序/web/native 平臺差異較大,雖然有許多框架進(jìn)行了嘗試,但還處于蠻荒時代,未出現(xiàn)得到一致認(rèn)可的方案
而這繁榮的背后也顯得雜亂,影響開發(fā)者選擇適合的技術(shù)方案。基于此,我們做了一次小程序跨平臺開發(fā)方向的調(diào)研,并得出如下建議:
從我們的了解來看,目前小程序市場,大部分還是微信小程序應(yīng)用,其次是支付寶小程序,百度小程序。對這幾端的融合也是目前比較切合需求場景的需求。基于此,我們調(diào)研了從微信小程序到其它端的轉(zhuǎn)換的情況,幫助大家了解如何快速實(shí)現(xiàn)微信小程序到其它小程序的遷徙。
說明: 以下測試結(jié)果基于微信官方微信小程序 demo 調(diào)研而得
Antmove 是目前小程序轉(zhuǎn)換開源解決方案里成熟度最高的,通過 Antmove 轉(zhuǎn)換器,可以一鍵將微信小程序轉(zhuǎn)換為其它平臺小程序,也可以將支付寶小程序轉(zhuǎn)換為其它平臺小程序,目前還在持續(xù)維護(hù)更新。
基于 Antmove 的多端開發(fā)相關(guān)介紹可以從這里了解
介紹:Taro 是一套遵循 React 語法規(guī)范的 多端開發(fā) 解決方案。
Github: github.com/NervJS/taro…
Taro 本質(zhì)上是一套自定義語法的跨端開發(fā)方案,但官方提供了微信小程序轉(zhuǎn)換為 taro 代碼的工具,基于此,用戶可以借助于 taro 將微信小程序轉(zhuǎn)換為 taro 代碼,然后再將其轉(zhuǎn)換為對應(yīng)平臺的小程序代碼。
需要進(jìn)行兩次轉(zhuǎn)換才能可以得到對應(yīng)平臺的代碼
功能支持情況不是很理想,如下為將微信小程序官方 demo 轉(zhuǎn)換為 taro,再轉(zhuǎn)換其它平臺的測試情況
轉(zhuǎn)支付寶:
轉(zhuǎn)百度小程序
轉(zhuǎn)頭條小程序
注: 目前轉(zhuǎn)碼工具初始化微信小程到taro代碼會有圖片路徑處理錯誤,需要手動修改一下
介紹: uni-app 是一個使用 Vue.js 開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、H5、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘)等多個平臺
Github: github.com/dcloudio/un…
介紹:相同風(fēng)格的語言開發(fā)開發(fā)多端小程序的開發(fā)框架,語言風(fēng)格類似小程序,支持雙向數(shù)據(jù)綁定 Github:github.com/didi/mpx.gi…
說明:除了 Antmove 轉(zhuǎn)換器外,其它方案解決方案的初衷是基于 react/vue 或自定義語法的角度來實(shí)現(xiàn)多端,所以微信小程序轉(zhuǎn)換到多端這一轉(zhuǎn)換流程并不包含來這些框架的所有能力和優(yōu)勢,對于原生小程序遷移到其它平臺本文調(diào)研結(jié)果可以參考。
這里主要指采用非小程序語法開發(fā)小程序應(yīng)用。 非小程序語法開發(fā)業(yè)務(wù)代碼方案已有諸多的調(diào)研和說明,可參考如下鏈接:
從上面我們可以看到隨著小程序的繁榮,跨端融合這個概念被提得越來越多,也出現(xiàn)了許多解決該問題的框架。但這真的代表著跨端開發(fā)的繁榮嗎?
我覺得還不是,小程序和 web,小程序和 native app存在著天然的差異化,這是很難彌補(bǔ)的,雖然社區(qū)上有出現(xiàn)了很多的方案,但都還不能說成熟。
只考慮小程序這一平臺,差異性會小一點(diǎn),但想做到完全的一套代碼,多個小程序平臺運(yùn)行還是很難。這里有以下幾個原因:
雖然有如上的差異,但依然小程序間的跨平臺還是看到了一定的可能性,這也是目前小程序跨端方案出現(xiàn)這么多的原因。
雖然上面提及了跨平臺開發(fā)的不足,但其優(yōu)勢依然存在,一套代碼多處運(yùn)行充滿了誘惑。當(dāng)我們將全端的要求降低,只考慮某些平臺的情況下,已經(jīng)出現(xiàn)了較為成熟的方案。
大多數(shù)情況下其實(shí)我們需要的只是某一端或是幾端的融合,在 taro 的統(tǒng)計示例中我們可以發(fā)現(xiàn),微信小程序應(yīng)用占比達(dá) 90%,即大多數(shù)的應(yīng)用只用 taro 開發(fā)了微信小程序。uniapp 也提到絕大多數(shù)應(yīng)用只用其來開發(fā)其中一端的應(yīng)用。在 Antmove 的統(tǒng)計中,絕大部分的用戶也只是微信小程序和支付寶小程序兩端的融合要求。
在小程序之前,多端融合就已經(jīng)被提及推出,在前端領(lǐng)域中,react 在這方面做得比較成功。在 react 學(xué)習(xí)一遍,即可多處編寫的理念下,較低成本的實(shí)現(xiàn)了多端的需求,如 react-web/react-native/react-sketch 等,也因此構(gòu)建了豐富的 react 生態(tài)。
除了 react 體系外,如下的方案則切實(shí)的實(shí)現(xiàn)了某些平臺的跨端
暢想未來,設(shè)備復(fù)雜化是個必然的趨勢,而這也更考驗(yàn)著跨端技術(shù)方案是否足夠成熟。
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)