作者:LeanCloud 鄭鵬
2018 年 12 月,Google 發布了 Flutter 1.0 正式版,似乎再次點燃了人們對移動跨平台開發的熱情。上一次出現類似的情況,是在 15 年年初,Facebook 發布 React Native 的時候。四年不到的時間裡,有兩家大公司相繼推出了自己的移動跨平台方案(當然還有 16 年的時候,微軟收購了 Xamarin,不過沒有前兩個那麼引人注目罷了),同時這些方案也受到了市場的追逐。這些現象,似乎預示著,跨平台開發才是移動開發的未來,或者說,跨平台開發才是一種更好的開發方式。
既然它是熱點,那肯定有可以討論的地方。不過,在說 React Native 和 Flutter 之前,我覺得要先談一談「跨平台開發」。
移動跨平台方案
那什麼是「跨平台開發」呢?
通常意義上來說,如果你想在 iOS 以及 Android 系統里,提供有相同內容的 App,那麼使用 Apple 提供的構建工具,開發一個 App,然後上架到 AppStore,同時使用 Google 提供的構建工具,開發一個 App,然後上架到 Google Play。這兩個 App 的實現,除了使用的工具不同之外,大部分業務邏輯是相同的。你可以發現,在這個過程中,產生了「重複」。
在重構時,如果項目里有大量的重複代碼,或者重複邏輯,我們一般會將這些代碼或邏輯以函數,模塊或庫的形式做封裝,這個過程最大化的消除了重複的代碼,最終達到簡化項目的代碼這一目的。
所以在我看來,「跨平台開發」也是基於這個思想而產生的,人們想要一套減少甚至不用寫重複邏輯的解決方案,然後市場給予了人們期望的方案。跨平台方案的最大特點,可以用 Sun 當年在推廣 Java 時,所使用的一句口號:」Write once, run anywhere」 作為總結。這一句話,也被如今的 React Native 以及 Flutter 引用或繼承。
React Native
React Native 是由 Facebook 所主導的跨平台方案,得益於 Javascript 以及 ReactJS 的流行,React Native 在推出時,便受到了大量的追捧。除了跨平台的特性,React Native 最大的特點就是,可以使用 Javascript 來構建移動應用,並且最終應用的表現形式,可以做到和使用原生開發套件開發的應用相差無幾。