BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Facebook开源React Native以及相应的IDE:Nuclide

| 作者 李小兵 关注 0 他的粉丝 发布于 2015年4月1日. 估计阅读时间: 6 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

近日,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还开源了对应的IDENuclide。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)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT