近期有好多人問我、我看今年前端分了倆方向啊,一個是Flutter和React Native這種,還有就是小程序,淘寶小程序這種微應用,我們公司讓我做React Native這塊兒,這是不是對我未來發展好些?以前技術棧還是Vue,我最近轉React了,剛開始寫第一個項目,我還看了看uni-app,學習成本更低一些,國內好像更吃香?到底第該學哪個?

很多學生問上面的問題,因為前端技術領域最不缺的就是新技術,前端開發者比較頭疼的不是沒有技術可用,而是可用的技術太多了,學不過來,也不知道選哪個。

其實類似的問題爭論在PC時代就存在過,太陽底下沒有什麼新鮮事。甚至在我們生活中都有類似的選擇問題。技術學習者要"看技術是技術,然後看技術不是技術"。如果你打算理解一項技術的產生和優缺點,就去追問他的應用場景,或者生活中的應用場景。如果一項技術你找不到生活中的對應,很可能你根本就不理解這項技術,而只是官方demo或者別人示例代碼的搬運工。

今天我就說說Flutter 、React Native 、 Ionic、 NativeScript 、小程序和PWA哪個值得學?

話說long long ago,有一個土豪,他有兩個兒子大明(IOS)和小明(安卓),土豪琢磨孩子年齡大了該準備婚事了,那就得先有房子,另外的家裡的門房和廂房都該翻蓋了,所以他想好好的規劃一番,對了還要做好防盜,不能讓閑雜人等進來影響安全。

他找老大談話徵求老大對房子的意見,老大說我的婚房要豪華氣派,要高級裝修,要住起來非常的舒服,閉路電視、寬頻,能通的就通上,反正也是折騰一回,蓋房子就大事,蓋一次爭取就是村裡最好的房子要住很多年呢。

他又找老二談話徵求老二對房子的意見,老二說我又不著急結婚,房子就是個住的地兒,我呢又在上學,反正怎麼快怎麼來吧,這樣周末和暑假還可以過來玩。房子老了,到時候結婚了再翻蓋也不遲,現在蓋了將來也舊了,對了要方便一些,能讓我的朋友們跟我隨便造。

土豪一聽都覺得有道理,他覺得都挺有道理,於是發了一個公告,尋找各路包工隊幫蓋房子。

於是發了一個招標公告:

本人土豪,家資殷實,誠招各路豪傑幫我家蓋房要求:

1.目前有主房兩套,其餘廂房、門房若干,要求儘可能一次性充分利用材料,一次採購和加工建築材料,能夠多個地方能用。比如攪拌機攪拌一次攪機開一次就能把各個房間用的水泥攪拌出來,能夠做出各個房子能用的磚塊和柱子。(維護一套代碼,能夠在跨平台運營,write once,run any where)

2.房子的各項水電煤功能齊全。(能夠充分利用設備的功能)

3.房子後期維護方便,最好能讓家人或者我的工人們也能改造房子。(學習容易)

4.蓋房成本要儘可能低。(開發和維護都省錢)

雖然土豪也覺得條件有些苛刻(跨平台的思路都是受質疑的),但是他想我有錢啊,我想試試(技術是在嘗試和質疑中完善進步的)。

還別說,才招標就來了5路人馬。每一路人馬都身懷絕技。

他們分別是:

html5 派: 以html5 為首,可以說包隊歷史最老了,其中的PWA團隊是新星,受人關注。

native派:java、kotlin兩個團隊瞄著小明的需求去的,Object-C和Swift團隊瞄著老大的需求去的,他們可以說最懂各自瞄準的需求了。

HybridApp派:號稱融合了h5派和native派的優勢,有很多成熟的住宅建設經驗,目前風頭正勁。以前有phonegap ,後來有cordova,最近ionic表現也很搶眼。

純真派:後起之秀,被認為是建築行業的未來,可以說綜合其它各個派系的優點,一出手變表現驚艷,但是初出茅廬,經驗上欠缺些。比如 NativeScript 、React Native、Flutter.

小程序派:Taro、WePY 、uni-app 、 mpvue 、 chameleon 這些團隊在專業的領域比如旅館建築很有建樹,實力不容小覷。

公開招標會開始了,招標主持人開始主持:

1.各位都是建築業的精英,我們實行集中陳述,互相答辯的方式。

第一個問題:

1.目前有主房兩套,其餘廂房、門房若干,要求儘可能一次性充分利用材料,一次採購和加工建築材料,能夠多個地方能用。比如攪拌機攪拌一次攪機開一次就能把各個房間用的水泥攪拌出來,能夠做出各個房子能用的磚塊和柱子。(維護一套代碼,能夠在跨平台運營,write once,run any where)

這個需求各路豪傑誰想說說?

html5 派的PWA直接站起來,因為這個就是他的強項啊!

PWA開口了,大家都知道H5作為資歷最老的建築團隊,從一開始就主張所有平台通用,目前我們所有的建築技術都是可以通用的,不管是住宅,商用還是,寫字樓,相比native派只能在具體的領域很厲害,我們還是優勢很明顯的,而是我們有望成為下一代的通用標準。還記得當初我們公司的傑作ajax嗎?不就成了數據交互事實標準了嗎?

沒想到還沒到答辯環節,PWA一開口就懟人了,但是這句話確實懟的native派沒話說。

HybridApp派,看PWA說完了,說到,大家看看淘寶以及各大主流平台都採用了我們的建築方式,所以我不想多說,我們的建築經驗第一,相信Flutter你也認同吧。

雖然Flutter被人戳中了軟肋,很不爽,但是還是點了點頭。對於前輩還是要尊重的。

純真派見HybridApp派坐下了,站起來,說到,我們這一派都是精英中的精英,比如react native、nativeScrtip,它沒好意思說自己,我們在建築業的表現大家也有目共睹了。

小程序派聽著他們的闡述,因為看到土豪的那麼多需求感覺自己實現不了,所以心虛想看看再說,所以暫時這一輪棄權。

好,主持人又開始說話了,我們看第二個問題:

2.房子的各項水電煤功能齊全。(能夠充分利用設備的功能)

剛才被懟的native派一下子站了起來,我就問一句話,說到能夠把房子的功能蓋到極致,我們派說第二,哪個團隊敢說第一?H5你們敢嗎?

因為這個問題native派派優勢性很大,所以過。

主持人繼續,我們看第三個問題:

3.房子後期維護方便,最好能讓家人或者我的工人們也能改造房子。(學習容易)

h5又站起來了,你就說我們幹活快不快吧?native?

native無話,

HybridApp派,我們也不慢。

h5很仔細的說,比我呢?

純真派雖然維護挺快,但是因為自己用了dart所以讓人去學還是存在一定困難的。

這個問題又過了,能讓家人或者我的工人們也能改造房子。這點心虛,所以不說話。

主持人繼續,我們看第四個問題:

4.蓋房成本要儘可能低。(開發和維護都省錢)

h5又站起來了,你們就說我蓋房子成本低不低吧?native。

native確實貴,被H5懟的真忍不住反駁,你那個也要叫房子?四處漏風,水電都不通。

主持人說一會答辯,土豪皺了皺眉。

HybridApp派和純真派說,我們也不慢啊。

主持人一看這要杠上,所以說,這樣吧我們開始答辯,大家說說你們打算怎麼干,依次發言。

html5說到,我打算搭一個木頭架子(html),然後外面貼上鐵皮,一刷油漆完事(css),裡面可以安個電風扇(js)。

native說到,你這個不就是活動板房嗎?煤電燃氣怎麼解決?

PWA說我們打算逐步解決這個問題,比如大明家可以安裝空調,因為他家房子架子可以用鋼筋的,門房因為比較老舊了,裝空調費勁,但是我們可以裝空調。

native,笑道,你是在蓋豬圈呢嗎?native起來發言,我呢打算先挖坑,然后里面水泥澆築,然後用壓路機軋上200趟,然後我去山裡拉石頭,把石頭磨得方方正正,然後壘起來,保證一百年不倒,重點是裡面各種高級裝修,閉路電視、監控只要是老大想裝的,我們全能裝。

HybridApp笑了,你上次給村長兒子結婚蓋的房子,人家兒子都上小學了,你完工了嗎?

主持人說,你打算怎麼干?

我呢主結構採用native的那套保證兼顧,裝修和牆壁使用h5的,又快有時會。

純真派問道,那前輩,活動板牆壁冬天取暖很費空調費啊,保暖性能也不好,怎麼解決呢?

HybridApp,無話。因為純真派知道這次小程序就是來陪標的,所以根本不放在眼裡,所以闡述自己的想法。

我能打地基的時候採用native的方式,而主體建築我採用混凝土鋼筋結構,雖然沒有把石頭打磨平整一整塊石頭那種方式堅固,但是也是絕對堅固能夠滿足建築的堅固需求的。

同時混凝土澆築速度快,同時能夠解決內部精裝和HybridApp的建築方式保暖、通風問題。

土豪心裡似乎明朗了一些,基本上小程序打醬油、PWA不能立馬滿足所有需求,H5因為功能缺失出局,集中點就在HybridApp和純真派上。

HybridApp雖然成熟,但是確實性能不好,功能上也不如純真派來的直接,但是又不想重複村長兒子的悲劇。但是一想到純真派的經驗不足,就想多問一些。

於是主持人問到,純真派你們能詳細說說嗎?

這句話無疑就相當於說,我覺得純真派有戲,那麼競爭就變成派系內部了,也就是三大主角。

react native、flutter、NativeScript .

react native先發言,

我們隸屬於fackbook公司,依託於react,語法上沿用了react,我們使用javascript,可以很好的維護。

不用HybridApp的Webview,徹底擺脫了Webview讓人不爽的交互和性能問題,有較強的擴展性,這是因為Native端提供的是基本控制項,JS可以自由組合使用,可以直接使用Native原生的動畫。

rn說了一堆專業術語顯得自己很專業聽的土豪一頭霧水,但是感覺很厲害。

flutter打斷道,說的好像你蓋完老大的房子的東西就直接能用到老二家似的,況且你看看你建築的那些組件的bug還用我說嗎?

rn說,我們確實存在一些問題,但是我們在嘗試解決。

flutter落井下石,嘗試解決?就是一堆坑沒解決唄。

rn反擊道,就算是沒解決也比你還沒遇到好吧?再說了你那個破dart,你覺得非專業人員能學會嗎?

NativeScript 一聽這麼說,心虛了,自己的東西比他們兩個都複雜,趕緊閉嘴。

看來剩下就是flutter和rn的論戰了,不過也沒有什麼新意,flutter總是強調自己的磚瓦石灰各種模塊多豐富,蓋房子多快,性能多好,然後rn總強調自己的學習不用學其它語言就js就行。

想到這裡,主持人說答辯結束,我總結一下,各方觀點:

1.h5開發快修改成本低於,能夠跨平台,但是因為標準更新緩慢,所以功能支持不完善。

2.HybridApp,方案成熟,應用很多,性能不是很好(相比flutter和rn)

3.native 功能全,但是不能跨平台,開發慢。

4.rn 學習成本低(比HybridApp高,比flutter低),坑比較多。

5.flutter 優勢明顯,但是需要學dart,但是組建豐富。

是這樣嗎?

大家點頭。

土豪考慮,綜合一聽其實王道還是h5,奈何它太慢了,感覺不是別人做的太好了,而是它做的太差了。小程序不考慮了,native不考慮成本太高,開發慢,不跨平台。

因為大兒子著急結婚(主營業務、核心需求),所以採納HybridApp比較穩妥,二兒子不著急結婚所以讓flutter去蓋(次要業務)。rn就不考慮了,不過好像因為之前的廂房是react蓋的,所以react native接受翻蓋會容易些,所以這塊給他們吧。

所以最終宣布:

大兒子的房子HybridApp中標,

二兒子的房子flutter中標,

廂房和門房因為之前就是react弄的,所以reaact native中標!

推薦閱讀:

相关文章