AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

Facebook 开源 Nuclide 项目

  • 2015-06-30
  • 本文字数:1420 字

    阅读完需:约 5 分钟

作为全球最大的社交网站,Facebook 与“开源”关系密切。其开源项目负责人James Pearce 曾公开表示,Facebook 不仅起源于开源平台,也一直致力于建设一个完整的开源“栈”环境。仅2014 年,Facebook 就设立了107 项开源项目,使其总的开源项目超过200 个。通过开源项目的方式,Facebook 创建良好的生态环境,吸引了外界大量的优秀开发者为其工作。近日, Facebook 正式开源了Nuclide 项目

其实,在相继开源 Hack HHVM React Native 后,Facebook 就开始考虑 Nuclide 项目的开源工作。作为基于文档编辑器 Atom 的软件包库,Nuclide 提供了类似 IDE 的功能,主要用于简化原生移动应用的开发。在项目启动之初,Facebook 团队就试图寻找一个支持可再开发、开源的编辑器作为起点。GitHub 去年开源的 Atom 在线文本编辑器正好满足了该需求。Atom 利用当前流行的 web 技术进行开发,允许用户使用自己的 React 或者 ES7。它提供了一个强大的原生 shell,能够很好的集成移动平台编译器或者开发工具。而且,Atom 针对多个语言都拥有完善的社区生态系统。最后,其丰富、可扩展的 API 支持用户快速开发 Nuclide 定制的功能。因此,Facebook 最终选择了 Atom 作为 Nuclide 项目的基础。

那么,究竟什么是 Nuclide 呢?Nuclide 就是一套基于 Atom 的软件包库,其代码托管在 GitHub 上。由于没有复制 Atom 编辑器的核心代码,当前初始版本的 Nuclide 可以安装在标准的 Atom 版本上,并支持用户继续使用除 Nuclide 外的其他社区软件包。Nuclide 的主要功能如下:

  • 支持远程开发 在 Facebook,网页和后端工程师都会在远程数据中心的服务器上进行工作。Nuclide 支持用户通过 SSH 连接到服务器上的轻量级节点 daemon 上,使得远程文件编辑和语法 / 类型检查成为可能。当然,这对于虚拟机同样适用,用户可以在 HHVM 上进行本地开发。
  • 支持 Hack 编程语言 Hack 的代码库是 Facebook 最大的代码库之一。从一开始,Nuclide 项目就考虑要支持 Hack 语言,包括了语法高亮、类型检查、自动完成以及 click-to-symbol 特性等。
  • 支持 Flow JavaScript 类型检查器 对于本地和远程的 JavaScript 开发,Flow 引入了类型完整性和针对 React 组件及应用程序的快速反映能力。正如对 Hack 的支持,Nuclide 支持 @flow 注释文件的特定 Flow 装饰和编辑器特性。
  • 支持 Mercurial 分布式版本控制系统 Facebook 目前采用 Mercurial 作为主要的源代码控制平台。因此 Nuclide 需要支持 Mercurial。对于本地和远程开发,Nuclide 支持文件树中高亮的修改、书签的设定以及只读的 diff 浏览器。
  • 支持一步到位的搜索 Nuclide 包括了统一的搜索工具包,支持在一个大的多语言代码库中高效而迅速的寻找文件和符号。

Facebook 的软件工程师 Michael Bolin 表示,Facebook 当前发布的软件包将仅仅是一个起点。未来,Facebook 将会和社区开发人员合作进行包的迭代优化工作。此外,Facebook 还有更大宏达的计划——统一的跨平台开发者体验。支持 iOS、React 以及 React Native 都是未来要实现的功能。而且,对于服务器和移动客户端都十分重要的调试功能也是未来要添加的功能。Michael 表示,正如 Buck 和 Infer 项目一样,Nuclide 项目未来将会在功能方面不断完善。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-06-30 04:535474
用户头像

发布了 268 篇内容, 共 128.4 次阅读, 收获喜欢 24 次。

关注

评论

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

作为一名Android面试官,这些面试官常问的开发面试题你都掌握好了吗?

android 程序员 移动开发

演进实录|不同阶段的企业如何搭建监控体系?

阿里巴巴云原生

阿里云 Kubernetes 容器 云原生 监控工具

全网热议:Android 在未来是否会走向终结?,android路由实现

android 程序员 移动开发

从零开始分析InstantRun源码,kotlin实现接口

android 程序员 移动开发

从面试无人问津到手拿百度offer,还原一段野生程序员的成长经历

android 程序员 移动开发

使用 Flutter 快速实现聊天应用,计算机移动应用开发

android 程序员 移动开发

做了6年Android开发,你会的还只有初级工程师的技术吗?

android 程序员 移动开发

使用 Kotlin API 实践 WorkManager,看完豁然开朗

android 程序员 移动开发

做了三年Android,公司发不出工资了,怎么办,阿里、腾讯大厂Android面试必问知识点系统梳理

android 程序员 移动开发

使用更为安全的方式收集 Android UI 数据流,深入浅出Android

android 程序员 移动开发

作为一名Android面试官,这些面试官常问的开发面试题你都掌握好了吗?(1)

android 程序员 移动开发

你知道App为什么会Crash吗?,Android性能优化之APK优化

android 程序员 移动开发

你确定自己学会了自定义MarqueeView?这个你会吗?进来看看吧

android 程序员 移动开发

使用Google开源库AutoService进行组件化开发,移动应用开发课程设计心得

android 程序员 移动开发

全网唯一一份,从入门到精通的Android进阶学习笔记整理,Android应用层

android 程序员 移动开发

【设计模式】第八篇 - 原型模式 - DOTA-幻影长矛手

Brave

设计模式 原型设计 11月日更

作为一名Android开发者,你有过迷茫吗?,面经解析

android 程序员 移动开发

作为Android开发者,你真的知道Android按下开机键到启动发生什么吗?

android 程序员 移动开发

作为面试官,如何考察工程师的软素质,Android开发经典实战

android 程序员 移动开发

你告诉我太卡了,那是你不晓得性能优化之app卡顿优化,销售应届毕业生的面试题

android 程序员 移动开发

使用C#创建,查看,2021大厂Android面试题精选

android 程序员 移动开发

做android开发一直不相信35岁危机,好像被自己遇到了,9次Android面试经验总结

android 程序员 移动开发

做个酷炫的“锤子” 开关效果,kotlinwindows桌面开发

android 程序员 移动开发

从零开始学数据结构和算法 (五) 分治法 (二分查找、快速排序、归并排序)

android 程序员 移动开发

任性!我开发了一款自己用的天气预报app,android双击事件响应

android 程序员 移动开发

作为一名面试者你应该知道的【上-带大厂面试题】,android组件化开发与sdk

android 程序员 移动开发

质量基础设施一站式服务平台,NQI云服务平台搭建

电微13828808271

作为程序员的我们应该如何在当今国内的信息产业生存?,万字解析

android 程序员 移动开发

我以为对jvm性能调优很了解,直到我到阿里面试完之后

Java 程序员 JVM

从零开始学数据结构和算法-(五)-分治法-(二分查找、快速排序、归并排序)

android 程序员 移动开发

仿微信视频通话大小视图切换(SurfaceView实现),面试官6个灵魂拷问

android 程序员 移动开发

Facebook开源Nuclide项目_移动_张天雷_InfoQ精选文章