昨天 React Native 官方團隊在 reddit 上發起了一次 AUA(ask us anything)活動,地址在文末。看到這個活動的時候,我腦海裡想到的第一個問題就是,他們怎麼看待 Flutter 的?結果開啟活動後,發現已經有人問了,而且還得到了官方的回覆。
提問者:
你們是怎麼看待 Flutter 的,和 Flutter 比起來 React Native 有什麼優劣?
官方回覆:
我認為 React Native 和 Flutter 的目標是完全不同的,因此在實現上也採取了完全不同的方法,所以如何看待二者,就取決於你要達到什麼樣的目的了。舉例來說,React Native 更傾向於將每個平臺各自的特性和元件樣式進行保留,而 Flutter 是通過自己的渲染引擎去渲染元件樣式,以代替平臺原生的效果。這取決於你想做什麼以及想做成什麼樣,這個應該就是你最需要考慮的事情了。
話裡有話:
看完了也沒說哪裡好,哪裡不好,很標準的官方回覆。看來是早就想好了答案,算準了肯定會有人問這個。而且看完這個回覆,我感覺像是在說:“小孩才做選擇,大人就都要!”
除了這個繞不開的問題以外,還有一個我認為比較關鍵的問題,就是關於 React Native 未來的發展。當然,這個問題也有人問了,就排在熱門第一個。
提問者:
React Native 已經發布了有 4 年之久了,想問下你們對它未來 4 年的發展有什麼想法呢?
官方回覆:
我認為未來 React Native 的發展將有兩個階段。
在第一個階段發展結束的時候,我認為 React Native 將成為一個把 React 語法帶到任何一個原生平臺上的框架。現在我們已經可以看到,通過 Fabric 以及 TurboModules 會讓 React Naitve 變得更易用更通用。我希望 React Native 可以支援任何移動、桌面、AR/VR 平臺。目前我們應該也可以看到,公司希望 React Native 能執行在除了 Android 和 iOS 以外的裝置上。
在我開始講述第二階段前,首先需要明白我們要通過 React Native 達到什麼目的是非常重要的,我們在嘗試把 React 帶到原生介面開發中。我們認為 React 在表現力、直觀性以及靈活性之間,做到了一個非常好的平衡,以提供良好的效能和靈活的介面。
在第二階段發展結束的時候,我認為 React Native 將會重新迴歸 "React",這意味著很多事情,並且他的定位也會更加模糊。但是,這意味著在 React Native 和 React for web 之間更加聚合與抽象。這可能意味著會將抽象的級別提高到目前開發人員熟悉的 Web 水平上來。然而有趣的是,Twitter 整個網站已經使用 React Native(react-native-web)編寫了。雖然這看起來像“程式碼共享”的 holy grail。但其實沒有必要,我相信它可以在任何平臺上都能帶來高質量的體驗。
話裡有話:
這段話的大概意思就是,未來,第一階段,React Native 計劃先把 React 搬到所有原生平臺上,然後第二階段,就是逐漸抹平 React Native 和 React for web 之間的區別,程式碼會朝著 Web 開發者熟悉的方向進行抽象和聚合
從這段話中,給我的感覺像是在說,React Native 是 React 的擴充而已,不要老拿我們和 Flutter 比,我們不一樣,OK?至於未來怎麼發展,那肯定是不會脫離我們龐大的 React 使用者群體的。這本來就不是開發出來給你們原生開發者用的,而是給 Web 開發者擴充技能棧的。這麼說,可能也是想避開和 Flutter 的正面交鋒吧?畢竟在原生開發領域,Google 的技術積累比 Facebook 還是要深厚。
現在這個活動已經有超過 200 多條回覆了,其中有很多大家比較關心的問題,我覺得所有在用 React Native 的開發者都可以去看一下。由於內容實在是太多了,我也就不逐一翻譯了。
還有一點需要特別提一下,React Native 為什麼要在這個時候搞這次 AUA 活動呢?正如他們在活動詳情裡提到的,因為 RN0.59 正式版馬上就要釋出了,官方宣稱這次更新帶來了“非常值得期待”的更新,所以可能是想出來好好宣傳一下吧。
如果你也有關注 React Native 開發,可以關注我的公眾號,會不定時分享一些國內外的動態,當然不只有 React Native,也會分享一些關於移動開發的其他原創內容。
圍觀地址:(要梯子)
https://www.reddit.com/r/reactnative/comments/azuy4v/were_the_react_native_team_aua/
推薦閱讀: