BT

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

Facebook开源Nuclide项目

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

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

其实,在相继开源HackHHVMReact 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读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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