Facebook 開源安卓版 React Native
Facebook 建立了 React JavaScript 庫 ,這樣,Facebook 的工程團隊就可以用相同的程式碼給 iOS、安卓和網頁開發介面了。現在,Facebook 透過開源 React“三部曲”中的最後一部分——安卓版 React Native(React Native For Android),將應用開發的超級力量賦予每個人。
Facebook先是在 2013 年將 React 開源 ,接著又在今年初的 F8 開發者大會上將 React Native 開源。但是,Android 版本意味著,熟悉 React 技術的工程師將可以為每個主要平臺開發應用了。如此一來,創業公司和大型科技公司就不必像現在這樣擁有那麼多工程師了,也不必再為招聘精通 iOS 和安卓開發技術的工程師而感到擔憂了——iOS 和安卓是兩種截然不同的程式碼庫。反過來,這又可以幫助加快團隊開發新功能的步伐,進而縮短從 iOS 版釋出到植入安卓平臺之間的時間。
今天,在一年一度的 @Scale 大會 上,Facebook 宣佈將 開源安卓版 React Native。來自 Facebook、Twitter、谷歌、Box、Pinterest 和微軟等公司的 1800 名高管和工程師齊聚本次大會,就如何改善他們的工程和基礎設施進行合作。與會的公司們已總計對 4500 多個開源專案做出了貢獻。
為何選擇開源?
大家或許想知道,Facebook 為何要送出一份像 React 這樣強大技術的禮物呢?畢竟,Facebook 完全可以自己利用這項技術,在與其他社交網站競爭時在工程方面獲得優勢地位。對此,Facebook 工程經理湯姆·奧基諾(Tom Occhino)給出了以下三個主要原因:
- 社群貢獻——“從功能到漏洞查詢,開發者社群對我們公司的發展做出了重大貢獻。”
- 人才招聘——“人們確實有興趣學習像 Facebook 等大平臺採用的技術。人們很高興加入打造這種技術的團隊中。”
- 吸引工程師加盟——“這讓有意加盟 Facebook 的每一位工程師佔據了先機,因為他們已經瞭解了我們的構架。”
基本上,Facebook 透過開源得到的東西遠遠超過失去的東西,同時還顯示出它無私的一面,畢竟這種舉動與 Facebook 連線世界的願景相符。奧基諾說:“單憑 Facebook 一家公司的力量無法開發所有的軟體。我們能做的最好的事情就是,向開發者提供工具,讓他們進一步推進這一使命。”
“一次學會,到處可用”
長期以來,跨平臺開發的“聖盃”始終是“一次編碼,到處執行”(code once, run anywhere),但是,由於網頁、iOS、安卓等平臺之間存在著重大不同,這一目標根本無法實現。但是,React 在三個平臺中植入了一個抽象層(level of abstraction),這樣,你只要一次學會 React,就可以到處編寫應用了。
舉例來說,今年早些時候 Facebook 給 iOS 和安卓兩大平臺開發了一款原生 Ads Manage 應用,得益於 React 技術, 開發時間僅僅是之前預期的一半 。Facebook 原本預計開發這款應用的時間為 18 個月,但它用時 5 個月開發出了 iOS 版應用,然後又在 3 個月內將其移植到安卓平臺。
這項技術還能讓 Facebook 重拾“快速行動”(Move fast)的理念,這種理念還是在 Facebook 只是一個完全基於網頁的平臺時提倡的,當時它不斷髮布程式碼,測試新功能。隨著 Facebook 開始擁抱移動時代,它不得不對工程團隊做出分工,讓不同的專家從事網頁端、iOS 和安卓等三個平臺的應用開發。
Facebook 工程經理奧利維亞·比肖普(Olivia Bishop)告訴我,沒有 React 技術,“應用很難快速迭代,因為每次你做出調整的時候,都必須重新編譯應用,將它放在裝置上進行測試。”由於程式碼可以重複利用,React 可以大大節省應用迭代時間。
一旦開發者社群熟悉了 React Native 的用法,它可以讓“精益創業”(lean startup)的理念更易於執行。所有開發者並不是犧牲跨平臺支援或是因為對現狀不滿而試水新的作業系統,相反,他們可以迅速看到應用的執行機制。當他們用 React 發現了有問題的東西后,也可以用它來改進 Facebook 的體驗。
Facebook 工程主管亞當·沃夫(Adam Woff)最後表示:“我將開源比作進化或腐蝕這樣的長期程式。隨著時間的推移,一定會獲得回報的——我們對開源的投資可以確保軟體保持相關性。”讓軟體始終留在一家公司,可以導致危險的迭代停滯。“隨著時間推移,這種固步自封的做法會破壞專屬軟體堆疊,對公司帶來傷害。”
相關文章
- beeshell:開源的 React Native 元件庫React Native元件
- React Native開發的乾貨集中營、玩安卓React Native安卓
- React Native區分安卓/iOS平臺React Native安卓iOS
- 看Facebook是如何優化React Native效能優化React Native
- Facebook開源安卓位元組碼檔案優化器安卓優化
- 美團React Native開源元件庫beeshell詳解React Native元件
- 開源一個天氣APP Build with React NativeAPPUIReact Native
- 開源React Native元件庫beeshell 2.0釋出React Native元件
- 國人自定義React Native開源元件ViewPagerReact Native元件Viewpager
- iOS React Native 混合開發整合React NativeiOSReact Native
- react native 處理iOS和安卓系統文字React NativeiOS安卓
- React-Native修改安卓平臺的包名React安卓
- 《React Native高效開發》之create-react-native-appReact NativeAPP
- 【3月更新】React Native 優秀開源專案大全React Native
- 學習React Native必看的幾個開源專案React Native
- React Native安卓專案打包釋出APK步驟React Native安卓APK
- React Native開源專案:F8 App環境搭建React NativeAPP
- 【譯】Facebook 開源 Detectron
- FaceBook開源庫Fresco
- React Native 開發規範React Native
- React Native 仿開眼 AppReact NativeAPP
- React Native 開發筆記React Native筆記
- [React Native]react-native-scrollabReact Native
- 從Facebook的React框架事件學習一下開源協議React框架事件協議
- 重回榜首!Facebook開源加強版BERT,全面超越XLNet
- React Native開發之必備React基礎React Native
- facebook開源專案集合
- React Native 開發環境搭建React Native開發環境
- React-native 開發小技巧React
- react-native開發避坑React
- 《React Native高效開發》之 templateReact Native
- React Native開發環境搭建React Native開發環境
- React-Native iOS Module開發ReactiOS
- react native 包學不包會系列--react native開發基礎知識React Native
- React Native 使用 react-native-webview 渲染 HTMLReact NativeWebViewHTML
- React Native Icon方案:react-native-svgReact NativeSVG
- React Native轉web方案:react-native-webReact NativeWeb
- Facebook 是如何構建第一個跨平臺的 React Native APPReact NativeAPP