【CSDN编者按】Facebook 2013 年开发的 React Native 是著名的跨平台移动应用开发工具之一。目前,它不仅是最为活跃的开发者社区之一,还是 GitHub 上贡献者数量最多的开源项目之一。

今年 6 月,为使 React Native 更轻量、更具灵活性以及更适应 JavaScript 生态圈的发展,Facebook 曾对外宣布将对其进行大规模重构,而现在,Facebook 正式公开了关于重构 React Native 的细节。

以下为译文:

今年,React Native团队将专注于React Native的大规模重构。

Facebook的React工程经理Sophie在她的文章“React Native的现状”(http://facebook.github.io/react-native/blog/2018/06/14/state-of-react-native-2018)中提到,我们制定出了一个计划,可以更好地支持蓬勃发展的React Native用户数量以及Facebook之外的合作者——现在是时候披露我们更多的工作细节了。

在这之前,我想先阐述一下我们针对开源React Native的长期愿景。

我们的React Native愿景是:

  • 一个健康的GitHub代码库。问题和拉取请求可以在合理的时间内得到处理。

  • 增加测试覆盖率。

  • 来自Facebook外部的提交不会破坏开源测试。

  • 更大规模、更有意义的社区贡献。

  • 稳定的API,简化开源依赖的接口。

  • Facebook使用与开源相同的公共API。

  • React Native的发行遵循语义版本控制。

  • 充满活力的生态系统。高质量的ViewManagers,原生模块,以及由社区维护的多平台支持。

  • 优秀的文档。专注于帮助用户创建高质量的体验,并提供最新的API参考文档。

我们认为以下重点领域可以帮助我们实现这一愿景。

精益核心

我们的目标是缩小React Native的核心范围,移除非核心组件和未使用的组件。我们打算将非核心的组件移交给社区,使之能够更快地发展。缩小规模后,也可以更容易地管理React Native的贡献代码。

我们移交给社区的组件之一就是WebView。我们正在制定一个工作流程,可以让内部团队在将组件从代码库移除后仍然继续使用这些组件。我们已经确定将所有权交给社区的组件还有几十个。

内部开源与升级后的工具

Facebook产品团队使用React Native进行开发的体验与开源有很大的区别。

Facebook没有使用开源社区中很流行的工具,但我们有一个内部工具可以实现相同的目的。有些情况下,Facebook团队可能已经习惯了外界没有的工具。面对即将到来的开源架构,这些差异性可能会带来很大的挑战。

我们还将努力发布一些内部工具,改进对开源社区流行工具的支持。以下是我们需要解决的部分项目:

  • 开源JSI,并让社区能够使用他们自己的JavaScript虚拟机,来替换React Native从最初版本就一直在使用的JavaScriptCore。我们会在今后的文章中介绍JSI的详细信息,同时你可以从Parashuram在React大会上的讲话(https://www.youtube.com/watch?v=UcqRXTriUVI)中了解更多有关JSI的信息。

  • 支持Android上的64位库。

  • 在新架构下启用调试。

  • 改进对CocoaPods、Gradle、Maven和新Xcode构建系统的支持。

测试基础架构

Facecbook的工程师在发布代码时,如果通过所有测试,则认为代码是安全的。这些测试可以判断代码改动是否有可能破坏我们自己的React Native功能。然而,Facebook通过不同的方法使用React Native。这些差异会让我们在不知不觉中破坏开源的React Native。

我们将支持内部测试,并确保它们可以在一个非常接近开源的环境中运行。这有助于防止没有通过测试的代码流入开源。我们还将努力开发基础架构,以便在GitHub上更好地测试核心代码库,方便将来的拉取请求可以轻松地包含测试。

再加上React Native核心的规模缩减,贡献代码的人能够更快更自信地合并拉取请求。

公共API

Facebook将会像开源社区一样通过公共API使用React Native,这可以减少无意中做出具有破坏性的改动。

为了解决这个问题,我们已经开始对内部调用进行转换。我们的目标是融合稳定的公共API,以保证在1.0版中采用语义版本控制。

沟通

React Native是GitHub上贡献者数量最多的开源项目之一。对此我们感到非常高兴,我们希望继续保持这种状态。我们将会继续努力采取一些措施(例如提高透明度和公开讨论等)吸引更多的贡献者。

文档是React Native新手会遇到的第一件事,但它并不是我们工作的重点。我们想要解决这个问题,首先我们会重新利用自动生成的API参考文档,创建专注于创建高质量用户体验的其他内容,并改进我们的发行说明。

时间线

我们计划大约在明年完成这些项目。其中有些工作已经在进行中,例如JSI已经开源了。其他项目则需要更长的时间才能完成,例如缩减核心规模等。我们会尽最大努力向社区报告最新的进展。

请加入我们的“讨论和提议”代码库(https://github.com/react-native-community/discussions-and-proposals),这是React Native社区发起的一项倡议,我们已经建立了React Native规划中的几项新方案。

原文:http://facebook.github.io/react-native/blog/2018/11/01/oss-roadmap

作者:Héctor Ramos,Facebook工程师。

译者:弯月,责编:郭芮

推荐阅读:

  • 微软“黑历史”:一个活了 45 年的愚蠢 Bug!

  • 微信“欲封”百度;AI 主播入职新华社;今日头条遭狠罚 | 极客头条

  • 人工智能进行时:人类的未来与未来的人类

  • 我混IT这么久,什么「山寨货」没见过?

  • 香港的"区块链"棋局, 十年后, 纽伦港还能主导金融世界吗?

  • 技术争鸣!七大主题报告,四大技术专题,AI开发者大会首日议程全回顾

  • 黑程序员黑出感情?!我大概是头一次见……

Facebook 正式公开 React Native 重构细节!相关推荐

  1. React Native 宣布重构计划!

    web前端教程 用大白话,来讲编程 6月中旬 Facebook 曾宣布要对 React Native 进行大规模重构,旨在使其更轻量,更具灵活性,更适应 JavaScript 生态圈的发展. 现在 F ...

  2. Facebook 正在大规模重构 React Native

    web前端教程 用大白话,来讲编程 Facebook 五年前为 React Native 框架设计的原则,影响了与 JavaScript 代码的整合程度,也加大了某些特性的开发难度. 因此 Faceb ...

  3. React Native发布重构路线图

    React Native作为时下最热门的跨平台开发方案,在这两年的移动跨平台方案中可谓一枝独秀,在很多的移动产品中都可以看到它们的影子,相比国内的Weex,RN的迭代更加频繁,性能上也无限的接近原生应 ...

  4. Facebook 开源安卓版 React Native,开发者可将相同代码用于网页和 iOS 应用开发

    转自:http://mt.sohu.com/20150915/n421177212.shtml Facebook 创建了React Java 库,这样,Facebook 的工程团队就可以用相同的代码给 ...

  5. 基于React Native的移动平台研发实践分享

    本文转自微信号EAWorld.扫描下方二维码,关注成功后,回复"普元方法+",将会获得热门课堂免费学习机会! 本文目录: 一.React Native 已经成为了移动前端技术的趋势 ...

  6. 移动开发者如何更好地学习 React Native? | 技术头条

    作者 | 魔笛 责编 | 郭芮 2015年3月,Facebook正式发布react-native,只支持iOS平台:2015年9月,Facebook发布了React Native for Androi ...

  7. React Native学习笔记一之搭建开发环境

    因为项目需要,今天开始正式学习React Native,先来搭建个开发环境 忐忑的心情 因为项目比较急,而且客户要求使用React Native开发,只能先学点基础然后在项目中使用的时候,边做边学了, ...

  8. React Native 初体验

    2015年9月底开始正式接触React native,公司的ios团队用它写了一个安卓项目之后,到上周,公司彻底停止了RN的使用. 至于我们为什么停止使用RN,原因大致有两个: 一.RN对安卓的支持还 ...

  9. React Native开发环境搭建

    1.安装Homebrew,简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件 2.安装node,brew install node 3.使用 homebrew 安 ...

最新文章

  1. 一款小巧好用的MAC地址扫描器
  2. SpringBoot打包时提示:Perhaps you are running on a JRE rather than a JDK?
  3. uva1347Tour
  4. Wise Package Studio介绍
  5. 有小数点是什么类型_「JAVA零基础入门系列」Day3 Java基本数据类型
  6. Inpaint for Mac(图片去水印软件)
  7. tensorflow函数介绍(3)
  8. 使用螺旋桨PaddleHelix完成RNA结构预测竞赛的前置基础知识整理
  9. modelica练习
  10. 一文学会如何使用工厂模式
  11. gnome 3 初见
  12. Go语言-基本类型(int,float,bool,byte,string)
  13. jsp值choose标签
  14. ironman钢铁侠高清mac动态壁纸
  15. 802.11有线等效加密WEP
  16. cocos2d 3.11获取机型和系统版本号
  17. 使用微搭低代码集成腾讯地图
  18. Hadoop大数据通用处理平台
  19. 数据集:Udacity Self-Driving 目标检测数据集
  20. 嵌入式课程---嵌入式Linux的直流电机驱动开发

热门文章

  1. leetcode python3 简单题171. Excel Sheet Column Number
  2. linux数据,Linux数据
  3. 【QT】QT从零入门教程(七):图像适应窗口
  4. C++智能指针的“GC”
  5. flask创建虚拟环境
  6. 中国机器人清洁器行业市场供需与战略研究报告
  7. 中国坚果脱壳机行业市场供需与战略研究报告
  8. arduino运行java_调试在Arduino MKR1000上运行的Arduino Uno代码
  9. JSP 与 Servlet重要部分
  10. V 神呼吁宽大处理,以太坊开发者 Virgil Griffith 被判入狱 63 个月