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版本了。