彬哥,我看今年前端分了倆方向啊,一個是Flutter和React Native這種,還有就是小程序,淘寶小程序這種微應用,咱們公司讓我作React Native這塊兒,這是否是對我將來發展好些?之前技術棧仍是Vue,我最近轉React了,剛開始寫第一個項目,我還看了看uni-app,學習成本更低一些,國內好像更吃香?到底第該學哪一個?javascript
前幾天有個學生問我上面的問題,由於前端技術領域最不缺的就是新技術,前端開發者比較頭疼的不是沒有技術可用,而是可用的技術太多了,學不過來,也不知道選哪一個。css
其實相似的問題爭論在PC時代就存在過,太陽底下沒有什麼新鮮事。甚至在咱們生活中都有相似的選擇問題。技術學習者要"看技術是技術,而後看技術不是技術"。若是你打算理解一項技術的產生和優缺點,就去追問他的應用場景,或者生活中的應用場景。若是一項技術你找不到生活中的對應,極可能你根本就不理解這項技術,而只是官方demo或者別人示例代碼的搬運工。html
今天我就說說Flutter 、React Native 、 Ionic、 NativeScript 、小程序和PWA哪一個值得學?前端
話說long long ago,有一個土豪,他有兩個兒子大明(IOS)和小明(安卓),土豪琢磨孩子年齡大了該準備婚事了,那就得先有房子,另外的家裏的門房和廂房都該翻蓋了,因此他想好好的規劃一番,對了還要作好防盜,不能讓閒雜人等進來影響安全。vue
他找老大談話徵求老大對房子的意見,老大說個人婚房要豪華氣派,要高級裝修,要住起來很是的舒服,閉路電視、寬帶,能通的就通上,反正也是折騰一回,蓋房子就大事,蓋一次爭取就是村裏最好的房子要住不少年呢。html5
他又找老二談話徵求老二對房子的意見,老二說我又不着急結婚,房子就是個住的地兒,我呢又在上學,反正怎麼快怎麼來吧,這樣週末和暑假還能夠過來玩。房子老了,到時候結婚了再翻蓋也不遲,如今蓋了未來也舊了,對了要方便一些,能讓個人朋友們跟我隨便造。java
土豪一聽都以爲有道理,他以爲都挺有道理,因而發了一個公告,尋找各路包工隊幫蓋房子。react
因而發了一個招標公告:面試
本人土豪,家資殷實,誠招各路豪傑幫我家蓋房要求:ajax
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中標!