宣布 React Native 0.64 版本於 iOS 上支援 Hermes
今天我們發布了 React Native 0.64 版本,此版本在 iOS 上提供 Hermes 支援。
iOS 上的 Hermes 選擇加入
Hermes 是一個開源 JavaScript 引擎,專為執行 React Native 而優化。它透過減少記憶體使用量、縮減下載大小並縮短應用程式變得可用的時間或「可互動時間」(TTI) 來提升效能。
在此版本中,我們很高興宣布您現在也可以使用 Hermes 在 iOS 上進行建置。若要在 iOS 上啟用 Hermes,請在您的 Podfile
中將 hermes_enabled
設定為 true
,然後執行 pod install
。
use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => true
)
請注意,iOS 上的 Hermes 支援仍處於早期階段。由於我們正在進行進一步的基準測試,因此我們將其保留為選擇加入。我們鼓勵您在自己的應用程式上試用,並讓我們知道它對您有何作用!
預設啟用 Inline Requires
Inline Requires 是一個 Metro 組態選項,可透過延遲 JavaScript 模組的執行直到它們被使用時,而不是在啟動時執行,來縮短啟動時間。
此功能已存在並被推薦為選用組態選項數年,並列在我們文件的效能章節中。我們現在預設為新應用程式啟用此選項,以協助人們在無需額外組態的情況下擁有快速的 React Native 應用程式。
Inline Requires 是一個 Babel 轉換,它會取得模組匯入並將其轉換為內嵌。例如,Inline Requires 將此模組匯入呼叫從檔案頂端轉換到它被使用的位置。
之前
import {MyFunction} from 'my-module';
const MyComponent = props => {
const result = MyFunction();
return <Text>{result}</Text>;
};
之後
const MyComponent = props => {
const result = require('my-module').MyFunction();
return <Text>{result}</Text>;
};
關於 Inline Requires 的更多資訊,請參閱效能文件。
使用 Chrome 檢視 Hermes 追蹤
在過去一年中,Facebook 贊助了 Major League Hacking fellowship,以支持對 React Native 的貢獻。Jessie Nguyen 和 Saphal Patro 新增了使用 Chrome DevTools 上的 Performance 標籤來視覺化您的應用程式在使用 Hermes 時的執行情況的功能。
如需更多資訊,請查看新的文件頁面。
支援 Proxy 的 Hermes
我們已將 Proxy 支援新增至 Hermes,以實現與熱門社群專案 (如 react-native-firebase 和 mobx) 的相容性。如果您一直在使用這些套件,您現在可以將您的專案遷移至 Hermes。
我們計劃在即將發布的版本中將 Hermes 作為 Android 的預設 JavaScript 引擎,因此我們正在努力解決人們在使用 Hermes 時遇到的剩餘問題。如果還有任何問題阻礙您的應用程式採用 Hermes,請在 Hermes GitHub 儲存庫上開啟問題。
React 17
React 17 不包含新的開發人員導向功能或重大重大變更。對於 React Native 應用程式,主要變更是新的 JSX 轉換,使檔案不再需要匯入 React 即可使用 JSX。
關於 React 17 的更多資訊,請參閱 React 部落格。
主要依賴版本變更
- 已捨棄 Android API 級別 16-20。Facebook 應用程式始終如一地捨棄對使用率非常低的 Android 版本的支援。由於 Facebook 應用程式不再支援這些版本,並且是 React Native 的主要測試介面,因此 React Native 也將捨棄支援。
- 需要 Xcode 12 和 CocoaPods 1.10
- 最低 Node 支援從 10 提升至 Node 12
- Flipper 提升至 0.75.1
感謝
感謝數百位貢獻者協助促成 0.64 版本的發布!0.64 更新日誌包含此版本中包含的所有變更。