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

03-05 20:14