《React-Native 0.59更新记录》
RN这次的更新真的是期待已久,不仅支持React新特性React Hooks还支持了LazyLoad,提升了Android端JSC的性能。
支持React Hooks
React Hooks的解决了我们的很多问题,可以通过我的博客中使用的示例代码看到方便之处;主要是解决的不能跨组件重用业务逻辑处理和状态的问题,当然还有其他的好处,后面打算写篇文章详细介绍。
RN中支持这个,就不用再纠结使用Mobx还是Redux,不用再担心满屏散落的业务处理。
更新Android平台上JSC版本,利用64位处理器提升性能
RN使用JSC(JavaScriptCore)驱动我们的应用程序。 在Android平台上的JSC还是几年前的版本,这就意味着大量的现代JavaScript特性没有被支持。甚至更糟的是,相比IOS的现代JSC性能低下。在这次发布中,所有将改变。
新版的JSC将带来64位的支持、现代JavaScript特性支持和巨大的性能提升。后面的维护也将利用Webkit的特性提升性能而不做大量的无用工作。
通过内联引入加速App启动
RN本身是很想提升性能并将这些优化服务到社区。基于这个愿景,RN开源社区认为应用程序应该是按需加载资源而不是臃肿的资源减慢App的启动。这个特征被称作 "inline requires" (内联引入),它可以让Metro识别要延迟加载的组件。组件架构复杂多样的应用程序将得到最大的改进。
在我们默认打开它之前,我们需要社区告诉我们它是如何工作的。在升级到0.59后,将会是新的metro.config.js文件,修改选项为true。这里仍然有许多尝试的空间,可以参考官方性能优化该部分内容。
// 修改前
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: false,
inlineRequires: false
}
})
}
}
// 修改后
module.exports = {
transformer: {
getTransformOptions: async () => ({
transform: {
experimentalImportSupport: true,
inlineRequires: true
}
})
}
}
精简核心代码
RN希望在将来的维护中更加高效的维护更少的核心代码,而不是把一些组件放在里面,所以官方将会把原有的部分默认组件从核心代码中分离成单独的组件,并单独维护项目。现在已经在着手了。部分默认组件已将分离。 包括 AsyncStorage、ImageStore、NetInfo、Slider等。
CLI命令行工具改进并单独分离维护
RN命令行工具长期存在问题,缺乏官方支持,官方已将其已到新的代码仓库。RN CLI。官方已经做出了一些令人激动的改进。
破坏性的更新
根据谷歌官方建议官方已经清理了一些Android support,可能导致一些原有的App崩溃。需要已有项目进行升级的务必注意。
该文章已同步我的个人网站 youngstream.tech
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。