今年 6 月中旬,FB 曾宣布他们将大规模重构React Native ,目的是为了让React Native 更轻量,更适应 JavaScript 生态圈的发展。今天,Facebook 正式公开了他们计划的一些细节:
1. 让 RN 的 GitHub 存贮库更健康,issues 和 pull 请求将及时得到处理;
-
提高测试覆盖率
-
从 Facebook 代码存储库同步的 Commits 不能违背开源测试的准则
-
提升社区的贡献量
2. 稳定 API,使之更容易与开源依赖项交互;
-
Facebook 使用与开源相同的公共 API
-
React Native 将遵循语义版本标准
3. 让生态系统更加有活力,社区将提供高质量的 ViewManagers、native modules、多平台支持;
4. 文档优化,专注于帮助用户创建高质量的体验,以及最新的 API 参考文档。
核心目标
RN 团队的目标是通过删除非核心和无用的组件来简化 RN,将非核心组件转移到社区,让开发者使用更加便捷,他们目前已经决定将这些组件的所有权为社区所拥有:
https://github.com/react-native-community/discussions-and-proposals/issues/6
WebView
就是其中的一个实例:
https://github.com/react-native-community/discussions-and-proposals/blob/master/proposals/0001-webview.md
与此同时,RN 团队还在开发一个工作流,它将允许内部团队在存储库中删除这些组件后还能够继续使用它们。
开源内部开发工具
由于 Facebook 内部开发人员用的是内部开发工具,开发体验与开源的完全不同,在开源社区受欢迎的那些工具可能并没有被 Facebook 开发人员使用,在某些情况下,Facebook 团队已经习惯使用仅限 Facebook 内部使用的工具,这种内外差异可能会很大程度影响他们接下来的重构工作。
为此,他们做了如下改进:
-
开源 JSI,使社区能够使用自己的 JavaScript VMs,从 RN 的初始版本中替换现有的 JavaScriptCore,有关 JSI 的信息,他们未来会公布,现在你可以先通过 React Conf 大会上的演讲视频了解: https://www.youtube.com/watch?v=UcqRXTriUVI
-
支持 Android 上的 64 位库
-
新架构下支持调试
-
改进对 CocoaPods、Gradle、Maven 和新 Xcode 构建系统的支持
建设测试基础设施
当 Facebook 工程师发布代码时,如果通过所有测试,则认为代码可以上线了,这些测试可以判断某些改动是否会破坏 React Native,由于 Facebook 使用 React Native 的方式与外部存在差异,他们可能在不知不觉中破坏了开源环境中的 React Native。
为此,Facebook 将支持内部测试,确保它们在尽可能接近开源的环境中运行。这将有助于防止被破坏的代码开源。同时,他们还将致力于建设测试基础设施,以便在 GitHub 上更好地测试核心存储库,使未来的 pull 请求能够包含在测试里。
使用公共 API
Facebook 将通过公共 API 使用 React Native,和开源一样,以减少无意间的破坏性更改,他们的目标是融合稳定的公共 API,并在 v1.0 中采用语义版本控制标准。
加强沟通
React Native 是 GitHub 上贡献者数量最多的开源项目之一(排名第二),未来,Facebook 将继续致力于贡献者相关的举措,例如提高透明度和公开讨论。对新手来说,文档将是一个大问题,为此,RN 将创建自动生成的 API 参考文档,改善用户体验。
RN 团队称,这些项目将在明年完成,其中,JSI 项目已经在进行中,其他的一些改进如简化 RN,还需要更多的时间去完成,开发者有任何问题可以在提案中讨论:
https://github.com/react-native-community/discussions-and-proposals
参考链接
http://facebook.github.io/react-native/blog/2018/11/01/oss-roadmap
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论 3 条评论