原文链接: http://arc.applause.com/2015/09/15/facebook-react-native-universal-app-platform/
原文发表时间: 2015年9月15日
真的可以么?一个代码库就能搞定一切?
一次编写,到处运行。自从个人计算及多平台技术出现以来,这句话就变成了无数软件开发者的梦想。 虽然Web技术给那些渴望寻求一次编写方案的程序员们带来了希望,但互联网巨头们却一直未能根本解决这个问题。
不过,问题总会有答案的。
JavaScript是一门Web开发语言。如果Facebook一直这么坚持下去,JavaScript仍然将是开发人员构建“一次编写、到处运行”的iOS和Android应用的主流语言。
过去几年,Facebook一直在建设一个跨平台的开发平台--React。今年初, Facebook公布了React Native, 一个一次编写就可以在所有平台上运行的语言,该语言可以取代JavaScript用于构建类原生的iOS和Android应用。
React Native是Facebook基于“一次编写,到处运行”理念的第二次大胆尝试(第一次是HTML5),试图用一套同样的源码来构建Web、 iOS和Android应用。尽管React Native还没有迎来它的黄金时期,但Facebook已经建好了一个看上去健壮且可伸缩的开发平台来使用JavaScript构建接近原生性能的应用。
React Native: 为 iOS & Android 设计的开源框架
第一个React Native概念的具体应用是一款叫做Facebook 广告管理器的iOS应用(为小型企业管理和创建广告)。本周,Facebook宣布其已将大部分iOS版广告管理器的代码做了移植,成功构建出了第一个React Native的Android应用。
和iOS一样, Facebook也已将React Native for Android开源, 让任何开发者都可以使用React Native工具在任意的平台上构建APP应用。Facebook的开发人员Daniel Witte和Philip von Weitershausen写到,他们可以将85%的iOS广告管理器Android版的代码分享出来。
“当所有事情都宣布并且完成后,我们兑现了自己的承诺--我们可以将Facebook第一个完整的React Native应用部署到两个平台上,界面和操作与原生应用并无两样,并且是由同一个JavaScript工程师组成的团队构建出来。”Witte和 von Weiterhausen写到。
目前,React Native对iOS和Android两个大平台都已开源。 但这并不意味着每个程序员都可以轻松的在此平台上用Javascript编写iOS和Android应用。据称,Facebook在iOS的基础上构建Android版的广告管理器应用时遇到了很大的挑战。
对于Facebook来说,最大的问题在平衡多个函数库和两套代码源。一些iOS和Android之间的设计差异也需要被消除。
Witte和von Weiterhausen写到:
React Native团队随着我们的App应用开发一起研发出了平台,并拿出了我们所需要的本地组件及API。那些组件可以为后面开发App的每个人带来好处。即使我们不得不自己做一些组件出来,在纯原生的系统上使用React Native仍然是值得做的一件事。我们如果不写那些组件,那些组件也就不会在将来被其他团队重用。
通用APP时代的到来
几个正在进行中的重大项目正在突破平台和操作系统之间的障碍。React Native是Facebook强力推进的“一次编写,到处运行”的开发框架。微软也想要所有的代码,给程序员们提供各种“方便的桥梁“这将能帮助他们从iOS, Android和Web上获得代码(和更老的Win32 app一起)用以构建跨多个设备平台的Windows 10 app应用。
苹果和Google在开始研究如何跨平台地构建App的时候并没有和Facebook与微软一起在相同的领域,但他们各自都在自己的生态系统里通过精简的手段跨越设备之间的壁垒。苹果已经可以使用Xcode来为Apple Watch,iPhone,iPad,CarPlay构建应用,很快Apple TV也会使用相同的代码库。Google已经拥有了能将Android应用移植到ChromeOS上的能力,同时还会为Android TV,Auto和Watch提供hooks。
HTML5的成熟--加上CSS和Javascript--也会促进跨平台开发的演进和发展。当Facebook在几年前使用HTML作为其移动应用的基础时,结果是有些作用但缓慢且不那么明显。这是为什么Facebook抛弃了HTML5转向用Objective-C和Java写的原生app。但Facebook从没有放弃跨平台的梦想,他持续做出的努力终于开花结果--那就是拥有更稳定平台和更广阔发展空间的React Native。