近日,Facebook 开源了能够使用 JavaScript 开发 iOS 和 Android 原生应用的 React Native 。目前,React Native 已实现了对 iOS 平台的支持,并且 Facebook 已经使用 React Native 开发出了多个产品,如 iOS 平台下的聊天工具 Groups 等。同时,Facebook 还为 React Native 开发了一款基于跨平台文本编辑器 Atom 的开源 IDE: Nuclide 。React Native 主要特性包括:
- 支持原生 iOS 组件通过使用 React Native,开发者能够使用 iOS 环境下的标准组件(如 UITabBar 和 UINavigationController)来开发原生应用,这就能够保证开发出来的应用在多个平台亦能保持始终如一的外观、风格,从而提高了应用产品的用户体验和品质;
- 支持异步执行JavaScript 应用代码和原生平台之间的所有操作都是异步执行的,原生模块还可以使用额外的线程,从而利用 React Native 开发出来的应用性能比较高(运行流畅和反应快)。此外,开发者还能够在模拟器或者物理设备上运行应用的同时利用 Chrome Developer Tools 调试 JavaScript 代码;
- 触摸操作React Native 实现了一个类似 iOS 平台下的响应系统,还提供了高级的组件如 TouchableHighlight 等;
- 引入了 Flexbox 布局模型和样式Flexbox 布局模型有利于构建常见的 UI 布局,如 stacked 和 nested boxes 布局。React Native 还支持常见的 Web 样式,如 fontWeight、font-size 等。样式表(StyleSheet)抽象提供了一种优化机制来声明组件所用到的所有样式和布局;
- 具有 Polyfills 功能Polyfills 功能是的开发者编写单独应用的代码而不用担心其他浏览器原生是不是支持。React Native 专注于改变试图(Views)代码编写的方式,开发者能够使用 npm 安装 JavaScript Library,并将这些 Library 融入 React Native,如 XMLHttpRequest、window.requestAnimationFrame 等
- 较强的可扩展性设计 React Native 主要是为了使得开发者使用常规的原生视图组件扩展和模块就可以开发出一个完整的应用,开发者能够复用已经构建的任何应用或者组件,并且还能够引入自己喜爱的原生 Library。
Facebook 的前端工程师 Christopher Chedeau 曾作了一个题为《深入了解 React Native》的演讲。在演讲中Christopher 指出了React Native 相比标准Web 开发或原生开发带来了三大方面的好处,即手势识别、原生组件、样式和布局。而在 Hacker News 上关于 Facebook 宣布 React Native 的讨论中,用户 peterhunt 还对 React Native 的内部机制进行了说明。
此外,Facebook 还开源了对应的IDE Nuclide 。Nuclide 具有能够开发基于 Hack 的 Web 应用、支持 React 和 React Native 开发、集成了构建工具 Buck 、集成了 JavaScriot 类型检查器 Flow 等特征。
React Native 开源的消息一经传出,就引起了国内外各大科技网站的竞相报道和社区的热烈讨论,Reddit 上也有了相关评论,用户 dzamir 评论道:
程序社区总是讨厌 Facebook 和 Javascript,就个人而言,自己对 React Native 非常感兴趣,自己还在 Android 工程中使用 Java RX,并且很期待在下一个 iOS 应用中使用 ReactiveCocoa 和 React Native。
Hacker News 上的相关评论已达数百条,用户 CGamesPlay 评论道:
React Native 是自己遇到过的最有前途的跨平台 UI 工具包,恭喜创建它的团队。自己为此很高兴的原因是:Java 承诺一次编写到处运行,这就意味着开发者只能服务最小的公共程序,而 React Native 承诺一次学习到处编写,这就意味着一个团队的工程师使用目标平台的 UI 就可以创建出高质量的应用。
创建 React Native 的目的是提高开发者的跨平台开发效率,它由 Facebook 创建并在 React.js 2015 大会上公布。React Native 基于 React.js 实现,React Native 像 React.js 一样也通过 JavaScript 声明语法来定义互动的用户界面,并通过自定义类型实现对原生 UI 组件的映射。据 Facebook 官方表示,React Native 开源后,Facebook 仍将继续资助该项目的开发。更多关于 React Native 的文档、教程、代码实例等相关信息,请读者查看官方提供的入门指南或登陆官方站点查看。
感谢徐川对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。
评论