由於React Native當初的設計架構以及原則,限制了部分功能開發的彈性,因此臉書向社群說明,他們正對React Native的架構進行三大修改,包括執行緒模型、非同步渲染以及更簡單的橋接機制,不過,開發者不需要擔心,這些改變都是低層架構調整,對於現存的應用程式不會有影響。

臉書React工程經理Sophie Alpert提到,在2013年他們啟動React Native專案時,與JavaScript間建立了非同步、序列化和批次處理的單獨一橋接方式。她舉例,就像是React DOM把React的狀態更新轉為可變呼叫DOM API,例如document.createElement(attrs)與.appendChild(),或是React Native被設計回傳一個需要更新的JSON清單訊息。

這些機制除了確保系統永遠不依賴同步回應外,所有內容也都能轉為序列化,以JSON格式回傳。而這樣的設計概念源自於要給這個架構額外的靈活性,基於這個靈活性,可以用來建置Chrome除錯工具,在執行JavaScript程式碼的同時,還能夠非同步執行WebSocket連線。

不過,在5年前為了增加靈活性而設計的架構卻顯得越來越綁手綁腳,她提到,非同步橋接表示開發者無法直接整合Native API與JavaScript邏輯取得同步結果,而批次橋接則會以佇列暫存Native的呼叫,這使得React Native函數呼叫難以原生實作。另外,序列化的另一個意思,在可以共享記憶體的情況下,卻以不必要的複製方法處理。他認為,這些限制對於完全使用React Native開發的應用程式不是問題,但是當要與其他既有的App程式碼整合,便會讓開發者崩潰。

為了解決這些問題,臉書現在正研究React Native的大規模架構,並且讓開發框架更具彈性,JavaScript/native混合App能夠以原生基礎架構整合得更好。

要讓React Native更輕量,並且與原生App結合更好,新架構將進行三個主要內部改變,首先臉書改變了執行緒模型,有別於現行UI更新需要三個不同的執行緒,未來將可以使用任何執行緒,對JavaScript同步呼叫進行高優先度更新,並且同時為其他非主執行緒處理的工作保有回應性。第二是在React Native中加入非同步渲染能力,除了提供多重渲染優先順序外,也簡化了非同步資料處理。最後,他們簡化了橋接機制,使其更快更輕量,未來Native與JavaScript間的直接呼叫更有效率,建置像是跨語言堆疊追蹤等除錯工具會相對簡單。

臉書重新撰寫了許多React Native的底層,帶入了許多更現代的架構,但是這些改變都是開發者看不見的,現有的React Native應用程式將能幾乎不做任何改變繼續正常運作。


熱門新聞

Advertisement