跳到主要内容

12 篇博文 含有标签「发布」

查看所有标签

发布 React Native 0.59

· 阅读需 6 分钟
Ryan Turner
核心维护者 & React Native 开发者

欢迎来到 React Native 0.59 版本!这是又一个重磅发布,包含了 88 位贡献者提交的 644 个提交。贡献的形式多种多样,因此 感谢你们 维护问题、培育社区,以及教授大家 React Native。本月带来了一些备受期待的变更,希望你会喜欢。

🎣 Hooks 来了

React Hooks 是本次发布的重要内容,它们让你可以跨组件重用有状态的逻辑。关于 hooks 话题非常热,如果你还没听说过,可以看看下面这些精彩资源:

务必在你的应用中尝试使用。我们希望你能像我们一样为这种复用感到振奋。

📱 更新的 JSC 带来性能提升和 Android 64 位支持

React Native 使用 JSC(JavaScriptCore)来驱动应用。Android 上的 JSC 版本较旧,很多现代 JavaScript 特性不支持。更糟的是,它的性能远不及 iOS 上的现代 JSC。随着本次版本发布,情况有了改变。

感谢 @DanielZlotin, @dulmandakh, @gengjiawen, @kmagiera@kudo 的精彩工作,JSC 赶上了近年来的进展。这带来了 64 位支持、现代 JavaScript 支持以及显著的性能提升。同时,也感谢他们让这个过程变得可维护,这样我们未来能够轻松利用 WebKit 的改进。感谢 Software Mansion 和 Expo 让这项工作成为可能。

💨 使用内联 require 加快应用启动速度

我们想帮助大家让 React Native 应用默认性能更好,并正努力将 Facebook 的优化带给社区。应用按需加载资源,避免启动时变慢。该功能称为“内联 require”,它让 Metro 可以识别可延迟加载的组件。组件层级复杂且多样的应用将会体验到最大的改进。

0.59 模板中的 metro.config.js 文件示例,展示了如何启用 inlineRequires

我们需要社区反馈效果如何,再决定是否默认启用。当你升级到 0.59 后,会看到一个新的 metro.config.js 文件;将选项切换为 true 并给我们反馈吧!更多关于内联 require,请查看性能文档并对你的应用进行基准测试。

🚅 精简核心正在进行中

React Native 是一个庞大且复杂的项目,代码库也很复杂。这使得代码不易接近贡献者,测试困难,且作为开发依赖显得臃肿。精简核心 是我们为解决这些问题,将代码迁移到独立库以便更好管理的努力。过去几个版本已经开始了这一步伐,让我们认真起来

你可能会注意到,更多组件已正式弃用。这是好消息,这些功能现在都有了活跃维护的负责人。请注意警告信息并迁移到新的库中,因为这些组件未来版本会被移除。下面表格列出了组件、弃用状态及迁移去处。

未来几个月,还会有更多组件沿着这条路走向更精简的核心。我们正在寻求帮助——欢迎前往精简核心专题参与。

👩🏽‍💻 CLI 改进

React Native 的命令行工具是开发者进入生态的入口,但长期存在问题且无官方支持。CLI 工具已迁移到新仓库,一支专注的维护团队已做出令人兴奋的改进。

日志格式更好,命令几乎瞬间执行——你会立即感受到差异:

0.58 版本中 CLI 启动较慢 0.59 版本中 CLI 几乎瞬间响应

🚀 升级到 0.59

我们听到了大家对 React Native 升级流程的反馈,正在采取措施在未来版本中提升体验。升级到 0.59 推荐使用 rn-diff-purge 来确定你当前版本与 0.59 之间的差异,然后手动应用这些更改。升级完成后,便可使用改进后的 react-native upgrade 命令(基于 rn-diff-purge)来升级到 0.60 及后续版本。

🔨 重大变更

0.59 对 Android 支持进行了整理,遵循 Google 最新推荐,可能导致已有应用出现问题。问题表现为运行时崩溃,并提示“你需要为该 Activity 使用 Theme.AppCompat 主题(或其派生)”。建议更新项目的 AndroidManifest.xml 文件,确保 android:theme 值为 AppCompat 主题(如 @style/Theme.AppCompat.Light.NoActionBar)。

react-native-git-upgrade 命令在 0.59 中被移除,建议使用新改进的 react-native upgrade 命令替代。

🤗 致谢

许多新贡献者帮助启用从 flow 类型生成原生代码解决 Xcode 警告——这是学习 React Native 工作原理和为社区做贡献的好方式。谢谢大家!期待未来出现类似的议题。

以上是我们重点标注的内容,还有很多令人激动的更新。查看完整更新请阅读更新日志。0.59 是一个巨大版本——迫不及待想让你试用。

今年剩余时间还有更多改进,敬请期待!

Ryan 和整个 React Native 核心团队

发布 0.56 版本

· 阅读需 6 分钟
Lorenzo Sciandra
Drivetribe 核心维护者 & React Native 开发者

备受期待的 React Native 0.56 版本现已发布 🎉。这篇博客文章重点介绍了该新版本中的一些变更。我们也想借此机会说明自三月以来一直让我们忙碌的工作内容。

重大变更的两难,或者说,“何时发布?”

贡献者指南解释了所有 React Native 变更需要经过的集成流程。该项目由许多不同的工具组成,需协调和持续支持以保持一切正常运行。加上充满活力的开源社区对项目的贡献,你就可以感受到这一切规模令人头晕目眩。

随着 React Native 的广泛采用,重大破坏性变更必须非常谨慎地进行,过程并不像我们期望的那样顺畅。我们决定跳过四月和五月的发布版本,让核心团队整合和测试一套新的破坏性变更。整个过程中我们使用了专门的社区沟通渠道,确保 2018 年 6 月的(0.56.0)发布尽量让那些耐心等待稳定版本的用户能毫无困难地采用。

0.56.0 完美吗?不会,和任何软件一样,但我们已经达到了“等待更稳定”与“测试得到成功结果,准备推动发布”之间的权衡点,我们觉得可以发布了。此外,我们也知道在最终的 0.56.0 版本中存在一些尚未解决的问题,例如这个这个这个还有这个。大多数开发者升级到 0.56.0 不会有问题。对于那些因上述问题受阻的开发者,我们希望在讨论中见到你们,也期待和你们一起解决这些问题。

你可以将 0.56.0 看作向更稳定框架迈出的坚实基石:可能需要一两周的广泛采用来消除所有边缘情况,但这将促成 2018 年 7 月(0.57.0)版本的更好表现。

最后,我们要感谢67 位贡献者在共计 818 次提交中付出的努力,他们让你的应用变得更好 👏。

那么,话不多说……

重大变更

Babel 7

你们可能知道,使我们能够使用最新最强大 JavaScript 特性的转译工具 Babel 即将发布其7 版本。由于这个新版本带来了一些重要变化,我们觉得现在是升级的好时机,这也让 Metro 能够利用其改进

如果在升级过程中遇到麻烦,请参考相关文档部分

Android 支持现代化

在 Android 方面,周边工具链发生了诸多变化。我们更新到了 Gradle 3.5Android SDK 26Fresco 1.9.0 和 OkHttp 3.10.0,甚至将NDK API 目标升级到了 API 16。这些变更应该不会带来问题,还能加快构建速度。更重要的是,这有助于开发者遵守 下个月开始生效的 Play 商店新要求

在此,我们特别感谢 Dulmandakh 提交的许多 PR ,使这一切成为可能 👏。

未来我们还将继续推进相关措施,大家可以在专门的 issue中关注 Android 支持的更新规划与讨论(以及一个针对 JSC 的子话题)。

新版 Node、Xcode、React 和 Flow

Node 8 现在是 React Native 的标准版本。虽然我们其实已经开始测试了,但随着 Node 6 进入维护模式,我们现在正式全面采用 Node 8。React 也升级到了 16.4,带来了大量修复。

我们放弃了对 iOS 8 的支持,使 iOS 9 成为可支持的最低版本。我们认为这不会成为问题,因为任何能运行 iOS 8 的设备都可以升级至 iOS 9。此举让我们得以移除为运行 iOS 8 的旧设备编写的鲜少使用的兼容代码。

持续集成工具链已升级为使用 Xcode 9.4,确保所有 iOS 测试都在 Apple 提供的最新开发工具上运行。

我们已升级到 Flow 0.75,采用了很多开发者青睐的新错误格式。同时,我们为更多组件创建了类型定义。如果你的项目尚未强制使用静态类型,请考虑使用 Flow 来在编码过程中而非运行时发现问题。

以及许多其他内容……

例如,YellowBox 已被替换,提供了更佳的调试体验。

完整发布日志请参考完整变更记录。升级时请务必关注升级指南,避免迁移到此版本时出现问题。


最后说明:从本周开始,React Native 核心团队将恢复举办月度会议。我们会确保及时向大家通报会议内容,并将你的反馈纳入后续会议讨论。

祝大家编码愉快!

Lorenzo, Ryan 及整个 React Native 核心团队

**附注:**和往常一样,请大家注意 React Native 仍处于 0.x 版本,因仍有许多变更进行中——升级时请保持警惕,可能仍会遇到崩溃或故障。提交问题和 PR 时请相互帮助,遵守行为准则,屏幕那头总有真实的人。