写点什么

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

2015 年 3 月 31 日

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

2015 年 3 月 31 日 00:5020248
用户头像

发布了 46 篇内容, 共 45.8 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

网站架构方法

Ya

架构 方法论 网站 大型软件

网络编程方法

Ya

方法论 网络编程 socket

聊聊技术人如何与甲方客户打交道

码闻强

程序员 程序人生 职业规划

Java 类

michaelliu

Java

转任管理岗位后,还要不要从事编码工作?

码闻强

团队管理 个人成长 程序员人生 职业规划

docker搭建lamp

刘磐石(刘坤鹏)

稀缺:我们为什么会陷入贫穷与忙碌

insight

读书笔记

原创 | OOAD范例:配置类设计

编程道与术

黑苹果提取codec,进入ubuntu的时候,提示:Try ubuntu without install

wood

ubuntu 黑苹果

网站是什么?

insight

网站

夏天将来,愿我们有足够的知识继续前进

Amon Lee

屏幕适配插件:ScreenMatch基本使用和注意事项

Arch

香港上市"失效"、传言申请科创板,聊聊半年亏损52亿的旷视科技 | IPO招股书系列(4)

赵新龙

IPO 旷视科技 上市 招股说明书 科创板

3000字长文教你大数据该怎么学!

老蒙

Java 大数据 spark 学习 开源

这一战,必战,若一去不返,便一去不返

泰稳@极客邦科技

创业 项目管理 团队建设 InfoQ

Java 代码的组织机制

michaelliu

Java

【获奖名单公示】作为一名技术人,我为什么要写作?

InfoQ写作平台官方

程序员 写作 写作平台 活动专区

如何高效开会

熊斌

效率 效率工具

学会打破确定性思维,才能做得更好

松花皮蛋me

高效工作 10X工作法 精益开发

专家的直觉和你的直觉

池建强

书摘 直觉

Java并发编程系列——线程的等待与唤醒

孙苏勇

Java Java并发 并发编程 线程

原创 | DDD与分层

编程道与术

哈希,茫茫人海,我一眼看到了你

dongge

工厂模式

Wen Wei

设计模式

Java 类构造函数的调用顺序

michaelliu

Java

程序员陪娃漫画系列——夜宵

孙苏勇

程序员 生活 程序员人生 陪伴 漫画

WIN10 解决“无法完成操作,因为文件包含病毒或潜在的垃圾软件

wood

win10

技术人员能力养成手记

码闻强

个人成长 程序人生 职业规划

【奖项公布】致内测用户——亲爱的1号创作者们~

InfoQ写作平台官方

写作平台 1号创作者 奖品

Gary的唠叨(二):先算是非,后算得失

郭蕾

Gary的唠叨 感悟

深度工作

insight

读书笔记

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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