React Native 團隊原則
Facebook 的 React Native 團隊遵循一些原則,這些原則有助於決定我們如何優先處理 React Native 的工作。這些原則特別代表我們的團隊,不一定代表 React Native 社群中的每位利害關係人。我們在此分享這些原則,以提高我們驅動因素、決策方式以及工作重點的透明度。
原生體驗
我們對 React Native 的首要任務是符合人們對每個平台的期望。這就是 React Native 呈現為平台原生元件的原因。我們重視原生外觀和風格,而非跨平台一致性。
例如,React Native 中的 TextInput 在 iOS 上呈現為 UITextField。這確保了與密碼管理員和鍵盤控制的整合能夠開箱即用。透過使用平台原生元件,React Native 應用程式也能夠與 Android 和 iOS 新版本的設計和行為變更保持同步。
為了符合原生應用程式的外觀和風格,我們也必須符合其效能。這是我們投入最雄心勃勃努力的地方。例如,Facebook 創建了 Hermes,一個從頭開始為 Android 上的 React Native 建構的全新 JavaScript 引擎。Hermes 顯著縮短了 React Native 應用程式的啟動時間。我們也正在進行重大的架構變更,以最佳化執行緒模型,並使 React Native 更容易與原生程式碼互操作。
大規模
Facebook 應用程式中有數百個螢幕是使用 React Native 實作的。Facebook 應用程式被數十億人在各種裝置上使用。這就是為什麼我們投資於大規模最具挑戰性的問題。
在我們的應用程式中部署 React Native 讓我們能夠識別在較小規模下看不到的問題。例如,Facebook 專注於改善從最新 iPhone 到許多舊世代 Android 裝置等各種裝置的效能。這種關注點為我們的架構專案(例如 Hermes、Fabric 和 TurboModules)提供了資訊。
我們已經證明 React Native 也能擴展到大型組織。當數百名開發人員在同一個應用程式上工作時,逐步採用是必須的。這就是為什麼我們確保 React Native 可以一次採用一個螢幕。很快,我們將更進一步,讓現有原生螢幕的個別原生視圖能夠遷移到 React Native。
專注於大規模意味著我們的團隊目前沒有從事許多事情。例如,我們的團隊不推動業界採用 React Native。我們也不會主動為我們在規模上看不到的問題建構解決方案。我們很自豪我們有許多合作夥伴和核心貢獻者能夠專注於社群的那些重要領域。
開發人員速度
出色的使用者體驗是迭代創建的。在執行中的應用程式中看到程式碼變更的結果應該只需要幾秒鐘。React Native 的架構使其能夠在開發期間提供近乎即時的回饋。
我們經常從團隊那裡聽到,採用 React Native 顯著提高了他們的開發速度。這些團隊發現,開發期間的即時回饋使得嘗試不同的想法並在不必為每個小變更中斷編碼工作階段時,更容易新增額外的潤飾。當我們變更 React Native 時,我們會確保保留開發人員體驗的這種品質。
即時回饋並不是 React Native 提高開發人員速度的唯一方式。團隊可以利用快速成長的高品質開源套件生態系統。團隊也可以在 Android、iOS 和 Web 之間共用業務邏輯。這有助於他們更快地發佈更新,並減少平台團隊之間的組織孤島。
每個平台
當我們在 2014 年推出 React Native 時,我們以座右銘「一次學習,隨處編寫」來介紹它——我們的意思是任何地方。開發人員應該能夠接觸到盡可能多的人,而不受裝置型號或作業系統的限制。
React Native 的目標平台非常多樣化,包括行動裝置、桌上型電腦、Web、電視、VR、遊戲主機等等。我們希望在每個平台上實現豐富的體驗,而不是要求開發人員為最低公分母建構。為了實現這一點,我們專注於支援每個平台的獨特功能。這涵蓋了從不同的輸入機制(例如觸控、筆、滑鼠)到根本不同的消費體驗,例如 VR 中的 3D 環境。
此原則影響了我們在跨平台 C++ 中實作 React Native 全新核心架構的決策,以促進跨平台的對等性。我們也正在改進針對其他平台維護者(如 Microsoft 的 Windows 和 macOS)的公共介面。我們致力於讓任何平台都能支援 React Native。
宣告式 UI
我們不相信在每個平台上部署完全相同的使用者介面,我們相信使用相同的宣告式程式設計模型來公開每個平台的獨特功能。我們的宣告式程式設計模型是 React。
根據我們的經驗,React 推廣的單向資料流使應用程式更易於理解。我們寧願將螢幕表示為宣告式組件的組合,而不是命令式管理的視圖。React 在 Web 上的成功以及新的原生 Android 和 iOS 框架的方向表明,業界也已接受宣告式 UI。
React 推廣了宣告式使用者介面。但是,仍然存在許多 React 獨特地定位來解決的未解決問題。React Native 將繼續以 React 的創新為基礎,並繼續走在宣告式使用者介面運動的最前沿。