写点什么

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:535282
用户头像

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

关注

评论

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

堡垒机可以管理哪些网络资产?咨询电话多少?

行云管家

网络安全 数据安全 堡垒机

高性能实战Alibaba Sentinel笔记,深度还原阿里微服务高并发方案

小柴说Java

Java 编程 架构 面试 后端

新手指南|帮助中心应该包含哪些内容?

Geek_da0866

从一条更新SQL的执行过程窥探InnoDB之REDOLOG

京东科技开发者

MySQL 数据库

物联网平台如何支持设备的多样化接入——设备接入类

阿里云AIoT

网络协议 存储 数据采集 JSON库 传感器

手把手地教你如何建立最好的知识管理体系

Baklib

题目新颖,内容全面!阿里巴巴又一Java面试神册开源!

Java永远的神

Java spring 程序员 面试 JVM

这么好用的接口工具,请允许我油腻一次!

Liam

Java 开发 Postman API 开放api

完整实现-通过DelayQueue实现延时任务

字母哥哥

Java 架构 并发编程 后端

[极致用户体验] 2行代码,让你的UI适配移动端、PC端,快来收藏

HullQin

CSS JavaScript html 前端 8月月更

阿里云AIoT物联网平台技术集锦

阿里云AIoT

数据挖掘 运维 监控 物联网 消息中间件

开源流式湖仓服务 Arctic 详解:并非另一套 Table Format

网易数帆

大数据 iceberg Hudi Arctic

非科班出身,开发五年之后我对编程有了新的领悟

Java永远的神

Java 编程 程序员 程序人生 计算机

数据透视表上线!如何在纯前端实现这个强大的数据分析功能?

葡萄城技术团队

前端

低/无代码的发展将显著改变银行开发生态

易观分析

代码 银行

StarRocks 技术内幕:向量化编程精髓

StarRocks

聊聊 npm 的语义化版本(Semver)

冴羽

JavaScript 前端 npm 项目开发 semver

哪些数据被纳入元数据管理的范畴?

雨果

元数据

前端培训就业后的程序员就业方向有哪些?

小谷哥

云堡垒机和软件堡垒机哪个好?区别是什么?

行云管家

网络安全 数据安全 堡垒机 云堡垒机

你可能不知道,自动化元数据管理的“七宗最”?

雨果

元数据

一对一直播系统源码——如何只需三步搭建

开源直播系统源码

软件开发 一对一直播源码 直播系统源码 一对一直播系统

首发!阿里P8顶级架构师总结的这份全网最全 JVM 知识宝典,帮你查漏补缺

了不起的程序猿

Java JVM 虚拟机 java编程 Java程序猿

超全面!字节最新发布22年秋招200道Java面试题(含答案)

Java面试那些事儿

Java 编程 面试 后端 架构师

延时任务-基于netty时间轮算法实现

字母哥哥

Java 架构 后端 Netty

怎样设计一个协助中心来帮助你的顾客?

Baklib

一文看懂流程挖掘是如何工作的

望繁信科技

学术加油站|面向HTAP数据库的基准评测工具研究进展

OceanBase 数据库

重磅揭秘!10分钟10TB数据跨云、跨地域传输的技术实践

星汉未来

云原生 数据迁移 东数西算 星汉未来

toB行业知识管理的重要性

Baklib

听潮汐,筑灯塔,聚千帆:智慧港口全球创新实验室启航时

脑极体

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