React Native 0.64版本發佈了,主要更新內容是在iOS開啓支持Hermes。
1.iOS支持Hermes引擎。
Hermes是一個爲優化運行React Native而開源的JavaScript引擎。它通過降低內存利用率、減少下載大小和減少應用程序可用或“交互時間”(TTI)所需的時間來提高性能。
其實Hermes在之前就已經優先在Android平臺上進行了支持,應該是在0.60.4版本上開啓了支持,相關文章Meet Hermes, a new JavaScript Engine optimized for React Native以及開啓Hermes支持的方法Using Hermes.
此次版本更新也正是開啓了iOS平臺上支持了Hermes。開啓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尚在初期階段。React Native團隊會繼續進行大量的基礎測試,鼓勵用戶在應用中進行嘗試。
2.默認啓用Inline Requires
Inline Requires是一個Metro配置選項,它通過延遲加載JavaScript模塊的執行,來縮短啓動時間,提交加載速度。其作爲可選配置選擇已經存在很多年,現在新版本應用中默認開啓,以此幫助用戶無需額外配置就可以快速使用React Native.
Inline Requires 是一種 Babel 變換,它可以將模塊導入並轉換爲 inline。例如,Inline Requires 將這個模塊導入調用從文件的 top 轉換到使用它的地方。
Before:
import { MyFunction } from 'my-module';
const MyComponent = (props) => {
const result = MyFunction();
return (<Text>{result}</Text>);
};
After:
const MyComponent = (props) => {
const result = require('my-module').MyFunction();
return (<Text>{result}</Text>);
};
3.使用Chrome查看Hermes
4.Hermes支持代理
在比較流行的第三方庫使用上添加了Hermes代理,比如react-native-firebase and mobx.
5.支持React 17
React 17 不包含面向開發者的新功能,也沒有重大的突破性變化。對於 React Native 應用來說,主要的變化是一個新的 JSX 轉換,使得文件不再需要導入 React 就能夠使用 JSX。
有關React 17的一些情況,可以看看React官方文檔
6.總結
此次React Native 0.64版本的更新屬於常規更新,並沒有突出的新功能發佈,期待React Native 1.0版本的正式到來,畢竟隔壁的Flutter都已經發布2.0版本了。