為一個新產(chǎn)品做技術(shù)選型,從性能考量上當(dāng)然是上原生比較好,但是在經(jīng)歷過維護(hù)多套代碼隨著業(yè)務(wù)的復(fù)雜度和版本迭代而帶來的痛苦后,本人是不太樂意上的,加之考慮到公司可抽調(diào)到的人力資源來算,最終還是決定用回Hybird。
然而,Hybird當(dāng)前可選型的基本只有這幾個:ionic、NativeScript(NS)、React Native(RN)、weex,以及新出的flutter,涵蓋Hybrid發(fā)展以來的三代技術(shù)。
第一代Hybird技術(shù),使用webview渲染+URLScheme+Cordova/Phonegap調(diào)用原生交互,sencha touch、ionic是其中代表之一。拋開缺點先不說,其UI基本全是網(wǎng)頁,開發(fā)方便、三端通用,這些優(yōu)點導(dǎo)致了一批框架涌現(xiàn),一時成百家爭鳴狀態(tài),而此間所謂框架,只是換個方式重復(fù)造輪子而已。此時國內(nèi)的狀態(tài),也如同現(xiàn)今的區(qū)塊鏈一樣,一窩蜂跟進(jìn)仿照,而不是嘗試解決其痛點。
技術(shù)創(chuàng)新是有必要的,是時代發(fā)展的需要,但是對于老瓶裝新酒,我覺得該用批判的態(tài)度去看待,它們有時不是因為有創(chuàng)新想法,而只是因為我不甘于用別人那套,我不想受制于人,我也是大廠我也能做,我要與眾不同,于是又造了一套輪子。
第一代Hybird技術(shù)成也webview,敗也webview,渲染性能是瓶頸,部分功能受限,流暢度略欠缺,國外的Telerik在看膩了一堆輪子后,推出了思想較為進(jìn)步、代表下一代Hybird技術(shù)的NativeScript,其思想是使用js調(diào)用原生api,很接近于原生android開發(fā),幾個月后,同樣是國外的Facebook推出了另一個劃時代產(chǎn)品ReactNative,利用虛擬Dom,使用js橋接調(diào)用原生UI渲染,從此Hybird技術(shù)正式進(jìn)入了第二代。
如果說第一代Hybird是春秋時代、百家爭鳴的話,那第二代Hybird就是戰(zhàn)國時代,只有幾個強(qiáng)大框架,長期時間,第二代就是“吃飯、睡覺、打鄭國(原生)”,樂此不疲,開發(fā)人員各自站隊,我說你的不好,你說我的不足,打了那么久,坑還是一如既往的多,完善的進(jìn)度好比萬里長征。像NativeScript,我沒太指望靠賣UI為生的公司能提供多少優(yōu)美開源的組件;像ReactNative,還沒有發(fā)布1.0正式版本,每個版本可能都有差異化,不能很好向下兼容;而Weex,好比熱帶雨林。
在看膩了它們打鬧后,莫名其妙賠了一通的Google說我不和你們一般見識,我自己玩,推出了用Dart語言開發(fā)的flutter,從此打開了第三代Hybird技術(shù)的大門。一群吃瓜群眾一臉懵逼:“這是什么鬼?”,其實flutter思想是挺好的,編譯成原生代碼來跨平臺調(diào)用原生資源,然而,其UI構(gòu)建方式,我想團(tuán)隊乃至很多人會像我一樣,吃習(xí)慣了甜豆腐腦、咸肉粽的表示吃不習(xí)慣啊……加之現(xiàn)在社區(qū)還不完善,遇到問題不好找到解決方案,不能貿(mào)貿(mào)然地應(yīng)用到產(chǎn)品上。
既想提高下開發(fā)效率,又想提高下用戶體驗,兜兜轉(zhuǎn)轉(zhuǎn),沒有一個特別稱心滿意的框架,You can you up,I can‘t just BB,常說現(xiàn)在科學(xué)比較發(fā)達(dá)了,對于程序猿來說,找一個坑少好用的Hybird框架怎么這么難呢?
……
找一個最愛的深愛的想愛的親愛的框架
來告別傷身
一個多情的癡情的絕情的無情的框架
來給我傷痕
孤單的人那么多 快樂的沒有幾個
不要愛過了錯過了留下了傷身的我
獨自唱情歌
為了愛孤軍奮斗
早就吃夠了愛情的苦
在愛中失落的人到處有
而我不是最后一個
愛要越挫越勇 愛要肯定執(zhí)著
每一個傷身的人得看透
想愛就別怕傷痛
……
愛一個框架好難……