跳到主要内容

2019 年 6 月 React Native 开源更新

·阅读时长 9 分钟
Christoph Nakazawa
Christoph Nakazawa
前 Facebook 工程师

代码与社区健康

在过去的六个月里,超过550位贡献者对React Native进行了总计2800次提交。来自社区的400位贡献者创建了超过1150个拉取请求(Pull Requests),其中有820个拉取请求被合并。

在过去的六个月中,尽管我们通过“精简核心(Lean Core)”工作将网站、CLI和许多模块从React Native中分离出去,但每天的平均拉取请求数量已从三个增加到大约六个。现在,平均未决拉取请求数量低于25个,我们通常在几小时或几天内给出建议和评论。

有意义的社区贡献

我们想重点介绍一些我们认为非常棒的近期贡献

精益核心

“精简核心(Lean Core)”的主要目的是将React Native中的模块拆分到单独的仓库中,以便它们能够得到更好的维护。在短短六个月内,像WebViewNetInfoAsyncStorage网站CLI等仓库总共收到了800多个拉取请求。除了更好的维护之外,这些项目还可以比React Native本身更频繁地独立发布。

我们还借此机会从React Native本身中移除了过时的Polyfills和遗留组件。在过去,为了在旧版JavaScriptCore(JSC)中支持像MapSet这样的语言特性,Polyfills是必要的。现在React Native附带了新版本,这些Polyfills已被移除。

这项工作仍在进行中,在原生和JavaScript方面仍有许多东西需要拆分或移除,但早期迹象表明我们成功地扭转了增加面积和应用大小的趋势:例如,查看JavaScript包,大约一年前,在0.54版本中,React Native JavaScript包大小为530kb,在短短6个月内增长到0.57版本的607kb(+77kb)。现在我们看到主分支上的包大小减少了28kb,降至579kb,增量超过100kb!

随着我们完成“精简核心”工作的首次迭代,我们将努力更有意图地向 React Native 添加新 API,并持续评估如何使 React Native 更小、更快,以及寻找方法赋能社区拥有各种组件的所有权。

用户反馈

六个月前,我们向社区提问“您不喜欢React Native的哪些方面?”,这很好地概述了人们面临的问题。我们在几个月前回复了该帖子,现在是时候总结一下在主要问题上取得的进展了

  • 升级:React Native 社区齐心协力,对升级体验进行了多项改进:自动链接,通过rn-diff-purge实现更好的升级命令,以及一个升级助手网站(即将推出)。我们还将通过发布每个主要版本的博客文章来确保传达破坏性更改和令人兴奋的新功能。这些改进中的许多都将使0.60版本之后的未来升级变得更加容易。
  • 支持/不确定性:许多人对拉取请求缺乏活动以及Facebook对React Native投资的普遍不确定性感到沮丧。正如我们上面所示,我们可以自信地说,我们已准备好迎接更多拉取请求,并且我们热切期待您的提议和贡献!
  • 性能:React Native 0.59附带了一个新的、速度更快的JavaScriptCore (JSC)版本。此外,我们一直在努力使内联requires更容易默认启用,并且在接下来的几个月里,我们将为您带来更多令人兴奋的更新。
  • 文档:我们最近开始着手全面修订和重写所有React Native文档。如果您希望贡献,我们很乐意获得您的帮助!
  • Xcode 中的警告:我们清除了所有现有警告,并正在努力不引入新警告。
  • 热重载:React 团队正在构建一个新的热重载系统,该系统很快将集成到 React Native 中。

不幸的是,我们尚未能改进所有方面。

  • 调试:我们修复了许多我们每天都会遇到的令人不便的错误和问题,但不幸的是,在这方面我们还没有取得我们所期望的进展。我们认识到使用React Native进行调试并不理想,我们将在未来优先改进这一点。
  • Metro 符号链接:不幸的是,我们尚未能为此实现一个简单直接的解决方案。不过,React Native 用户分享了各种可能对您有用的变通方法

鉴于过去六个月的巨大变化,我们想再次提出同样的问题。如果您正在使用最新版本的 React Native 并希望提供反馈,请在我们的新一期“您不喜欢 React Native 的哪些方面?”中发表评论。

持续集成

Facebook 会首先将所有拉取请求和内部更改直接合并到 Facebook 的仓库中,然后将所有提交同步回 GitHub。Facebook 的基础设施与常见的持续集成服务不同,并非所有开源测试都在 Facebook 内部运行。这意味着同步到 GitHub 的提交经常会破坏开源测试,而修复这些测试需要大量时间。

来自 React Native 团队的Héctor Ramos在过去的两个月里,致力于改进 React Native 在 Facebook 和 GitHub 上的持续集成系统。现在,大部分开源测试在更改提交到 Facebook 的 React Native 之前运行,这将在提交同步时保持 GitHub 上的持续集成稳定。

下一步

请务必查看我们关于 React Native 未来的演讲!在接下来的几个月里,Facebook 的 React Native 团队成员将在Chain ReactReact Native EU上发表演讲。此外,请关注我们的下一个版本 0.60,它即将发布。这将是令人兴奋的