React Native 的 2017 年終總結

Marno發表於2019-02-26
  • 本文為 Marno 原創,轉載必須保留出處!
  • 公眾號【 aMarno 】,關注後回覆 RN 加入交流群
  • React Native 優秀開源專案大全:http://www.marno.cn

又到了寫年終總結的時候,但今年不想寫我的事情,而是想總結一下 React Native 的這一年。知道有很多讀者是因為 RN 才關注我的,特別感謝大家的關注。在過去一年,我堅持只發原創文章,其中大部分是關於 RN 的。但因工作變動,在 2017 下半年裡,RN 不再是我主要研究的方向了,所以更新速度就慢了。可寫作是我的個人愛好,我會堅持下去,也會在 2018 年和大家分享更多優質的原創內容。

2017這一年,
React Native 共更新 92 個版本。
平均 7.67 個/月,1.77 個/周。
其中正式版共 12 個(有 release 日誌)
平均 1.0 個/月,在按照 fb 的規劃進行
17 年的第一個版本是 0.40.0
最後一個版本是 0.52.0-rc0
7 月份釋出次數最多,共 14 個版本。
1 月和 12 月釋出最少,均為 3 個版本。

每個月釋出版本的數量▲
1801046924.jpg

在這 92 個版中,更新的內容有:
僅針對 Android: 新特性 218 個、修復 bug 79 個 
僅針對 iOS: 新特性 286 個、修復 bug 96 個 
雙平臺通用: 新特性 608 個、修復 bug 157 個、重大變更 35 個

現在 RN 更新的速度已經比剛出來那會兒慢了,但是一個月一個正式版,還是讓許多使用 RN 的開發者感到苦惱。因為經常在更新後專案就跑不起來了,所以很多團隊都選擇了不更新,但也就沒法用最新的 API 了。我覺得最好進行跨版本升級,因為有些版本之間的差別不是很大,我們可以忽略掉。但跨度也不要太大,不然出了問題都不知道去哪裡找原因,隔個兩到三個版本升級比較合適。

每個版本更新內容統計▲
1801046779.jpg

更新了這麼內容,有哪些是比較重要的呢?下面我們一起來回顧下,今年 RN 新增了哪些實用的新功能(可能會漏,歡迎留言補充)。

0.42 版本

  • iOS:不再支援 Xcode7.x 編譯,升級為 Xcode8.x
  • Android:移除 RecyclerViewBackedScrollView 元件
  • 通用:WebView 元件新增 injectJavaScript 方法
  • 通用:為元件的部分屬性新增百分比支援
  • 通用: init 專案時可以新增模板

0.43 版本

  • 通用:FlatList 正式釋出
  • 通用:樣式支援 alignContent 屬性
  • 通用:init 專案時的模板可以自定義了

0.44 版本

  • 通用:不再支援通過 @provides NameOfModule 匯入模組
  • 通用:將 Navigator 元件標記為過期
  • iOS:移除 MapViewIOS 元件,建議使用 Airbnb 的 react-native-maps

0.45 版本

  • 通用:新增支援通過 CameraRoll 元件訪問視訊

0.46 版本

  • 通用:引入 ImageBackground 元件

0.47 版本

  • Android: link 命令支援關聯 Kotlin 模組
  • Android:為 AndroidViewPager 新增 peekEnabled 屬性

0.48 版本

  • iOS:移除 AdSupportIOS 元件

0.49 版本

  • 通用:將 index.ios.js 與 index.android.js 合併為 index.js
  • 通用:TextInput 元件新增 autoGrow 屬性

0.50 版本

  • 通用:React Native 的 2017 年終總結 元件中不再支援巢狀元件
  • 通用:新增 SwipeableFlatList 元件(實驗性)
  • 通用:引入  元件
  • Android:新增對 Android 8.0 的支援

0.51 版本

  • 通用:padding,margin,border 等屬性支援 RTL 佈局方式

當然還有很多其他更新,比如執行效率上的提升、程式碼結構的優化等,我就不一一列舉了。要問 RN 有沒有比去年更好用?確實還是更好用了一些,不過我總覺得今年的更新不是特別給力,不知道大家有沒有這樣感覺。但至少我們還是可以看出, Facebook 在努力讓 RN 變得更好。

這一年裡,我一共翻譯了 7次更新日誌,大概統計了下這些日誌在各渠道的閱讀總數,至少應該在 70K 以上了,作為比較枯燥的“更新日誌”還能有這麼多人看,我已經很是欣慰了。有想了解更多更新內容的朋友,可以去看下每個版本對應的中文更新日誌。

附上之前幾次翻譯的日誌連結:

翻譯這些內容的過程並不輕鬆,為了儘可能準確的還原英文原意,幾乎每一條更新日誌的詳情我都會去仔細看,只有自己理解了以後才會去翻譯。儘管這件事佔用了我大量的個人時間,而且可能最後看的人也並不是很多,但我覺得既然做了,就力求做到準確,不然可能會讓看的人比較困惑。

一整年過去了,RN 的版本從 0.40.0 到更新到了 0.52.0-rc0,如果保持這樣的節奏更新下去,那我們至少也得在 4 年後,也就是 2021 年,才能等到 RN 1.0.0 的版本了。不過前提是 RN 還能維護到那個時候去,畢竟現在技術更新換代的節奏越來越快了。像微信小程式,支付寶小程式這樣的技術,都在擠壓著 RN 的生存空間。加上 RN 自身實現機制的約束,導致它不可能承載過於複雜的業務,那些追求流暢使用者體驗的產品,依然還是會選擇將原生開發作為業務的主要載體。 至於以後 RN 會怎麼發展,我們能做的也只是獻上美好的祝福了。

最後做個小小的統計,看下現在哪個版本的 RN 用的人最多?歡迎大家在留言區評論回覆。

React Native 的 2017 年終總結