10 个你可能不知道的事,关于 Facebook 内部开发环境是如何使用 JavaScript 和 GraphQL 的

本文讲的是10 个你可能不知道的事,关于 Facebook 内部开发环境是如何使用 JavaScript 和 GraphQL 的,


最近, 来自 Facebook 的 Lee Byron (@leebyron) 在Hashnode上主办了一场 AMA( Ask Me Anything )。 这里提出了许多有趣的问题,并且 Lee 透露了一些关于 Facebook 如何使用 React 、GraphQL 、和 React Native 的惊人事实与细节。我拜读了他在 AMA 上的回答,思考并总结出了十条有趣的重点。

那么,开始吧。

React 背后的灵感?

React 一定程度上受到了 XHP 的启发,来自 Facebook 的 Marcel Laverdet 在2009年创建了此项目,用于模块化 Facebook 的用户界面。详见这里

Facebook计划用React Native 重写他的移动应用吗?

好吧, 答案是 : 他们已经这样做了。 有一部分 Facebook 的应用使用了 React Native 构建,也有一部分不是。 详细的答案见这个讨论.

哪些场景正在使用 Immutable.js ?

  • Ads Manager 和他们基于 React Native 的 Android 和 IOS 应用。
  • Messenger 网站 (messenger.com)
  • 用 Draft.js 写的新文章。
  • 在 Facebook News Feed 上所有的评论。

Facebook 如何为 React 组件写 CSS ?

Lee 透露到他们禁止导入 CSS 规则到除 React 组件以外的任意文件。 这样不仅确保了一个组件经由格式化的属性所应该暴露出的正确的 API ,同时其他的组件不能够通过导入一个规则来覆盖他。 此外,他们并不需要通过 JavaScript 的一些技巧来导入 CSS 文件。相反,他们遵循Button.js 临靠 Button.css 的规范。详见 这里

Facebook 会随着每个 React 重要发行版而更新 React 组件吗?

  • 是的,他们会。
  • Facebook 通常将 React master 分支用于生产环境
  • 从2012开始,React API 并没有进行多少重大的更改。 因此,React 团队也很少面临必须更新组件的状况。
  • 如果有突发的更新,React 团队的成员 Ben Alpert 将会负责代码库的所有同步工作。
  • 他们也会使用类似 jscodeshift 的自动化工具去简化问题。

GraphQL 背后的故事是什么?

GraphQL 诞生于2012年,当时 Lee 正在 IOS 组致力于 News Feed 。 当时,在一些网络环境糟糕的地区,Facebook 正急速增长。 因此, GraphQL 最初被设计于应对缓慢的手机连接。 不久,当 Relay 正准备开源时,他们认为缺乏 GraphQL ,Relay 的开源就没有多少意义。 同时,他们也意识到 GraphQL 服务编写得很巧妙并且大多数 Facebook 以外的公司都未尝使用过。因此,他们决定通过编写一个语言无关的规范来发布它。那就是 GraphQL 背后的故事。详情可阅读 此处 的回答。

Facebook 正在什么场景使用 GraphQL ?

Facebook的 Android 和 IOS 应用 几乎全部依赖于 GraphQL 支持。 在一些情况下, 如Ads Manager,整个应有都在使用 Relay + GraphQL 。

是的, Facebook 重度依赖 SSR 。尽管如此,Lee 说他们很少有在服务器使用 React 渲染组件的场景。这个主要取决于他们的服务器环境。

Facebook 使用 Node.js 吗?

Lee 说他们有许多客户端的工具由 Javascript 编写并通过 Node 运行。remodel 就是这样一个通过 npm 安装的工具.他们所有的 IOS 和 android 上的内部 GraphQL 客户端工具都在使用 Node 。但是他们在服务器端使用 Node 并不多,因为迄今都没有一个强烈的需求。 即使某一天他们想在服务器端使用 Javascript (例如:在服务器上渲染 React ),他们也会直接使用 V8 引擎而非 Node 。

Falcor (by Netflix) 对比 GraphQL 如何?

据 Lee 所说, 两个工具都在尝试解决类似的问题。当 GraphQL 团队第一次听说 Falcor 时,他们与 Netflix 团队见了一面并交换了一些想法。虽然如此,Falcor 与GraphQL 之间还是有许多区别的。阅读 此处 的回答可以知道更多。





原文发布时间为:2016年06月12日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-11-10 05:23:33

10 个你可能不知道的事,关于 Facebook 内部开发环境是如何使用 JavaScript 和 GraphQL 的的相关文章

ES6 你可能不知道的事 - 基础篇

序 ES6,或许应该叫 ES2015(2015 年 6 月正式发布),对于大多数前端同学都不陌生. 首先这篇文章不是工具书,不会去过多谈概念,而是想聊聊关于每个特性 你可能不知道的事,希望能为各位同学 正确使用 ES6,提供一些指导. 对于 ES6,有些同学已经在项目中有过深入使用了,有些则刚刚开始认识他,但不论你是属于哪一类,相信这篇文章都有适合你的部分.针对文章中的问题或不同意见,欢迎随时拍砖.指正. 正文 Let + Const 这个大概是开始了解 ES6 后,我们第一个感觉自己完全明白并

关于博客推广中几个你可能不知道的事

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 博客推广是大家公认的一大推广利器,但是真正能够做好并坚持下来的人少之又少,今天谈谈关于博客维护与推广的你可能还不知道的事. 一.做博客要有耐心 要做好seo这个行业,我想我们首先应该问:"你有足够的耐心吗?"三天打鱼两天晒网可是这一行的大忌.用博客养站最大的问题也在此,博客长时间不更新,犹如一片长满荒草的菜地,连老黄牛都不

ES6 你可能不知道的事 - 进阶篇

前言 这篇文章主要会针对上篇未涉及到的进阶特性展开:而与前一篇文章相同,本文主要介绍这些特性的一些容易忽略的部分,希望能对大家正确认识和使用 ES6 有帮助. 还是那句话,时间和能力有限,针对文章中的问题或不同意见,欢迎随时拍砖.指正! 正文 Module 模块化是个进行了很久的话题,发展历程中出现过很多模式,例如 AMD, CommonJS 等等. Module 是 ES6 的新特性,是语言层面对模块化的支持. 与之前模块加载机制不同,Module 是动态的加载,导入的是变量的 只读引用 ,而

关于现代传感器 有哪些你所不知道的事?

中国物联网校企联盟认为,传感器的存在和发展,让物体有了触觉.味觉和嗅觉等感官,让物体慢慢变得活了起来."人们为了从外界获取信息,必须借助于感觉器官.而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了.为适应这种情况,就需要传感器.因此可以说,传感器是人类五官的延长,又称之为电五官. 传感器技术作为信息技术的三大基础之一,是当前各发达国家竞相发展的高新技术,是进入21世纪以来优先发展的十大顶尖技术之一.传感器技术所涉及的知识领域非常广泛,其研究和发展也越来越多地和其

云服务鼻祖来告诉你99%的创业者不知道的事

说到创业,可能出现在你脑海里的是,在硅谷或者北京这样的创业沃土,一个年轻的工程师带着他绝妙的创意和决心吸引来了风险投资,然后开启一段创业的旅程.但是,如果你周围完全没有创业环境可言,融资也丝毫看不到希望呢?这本书将完全颠覆你的创业常规性思维,给你一个不一样的创业故事. 三个创业青年,从丹麦阁楼到美国加利福尼亚,从一个小目标到市值30亿美元上市公司,创业的成功是否有规律可循?如何克服创业路上的艰辛.迷茫.困惑.贫困?如何把服务卖到全球?如何做到在自己的领域只是被模仿从未被超越?云服务鼻祖.创投界独

新手买外国空间所不知道的事

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 做网站离不开域名和空间,然而空间往往是站长心中的痛,特别是国内空间.还记得去年那场整顿风暴,空间说停就被停了,IDC说倒闭就倒闭了,很多站长也就跟着over了.现在一个拍照备案的政策,把大家都搞懵了.既然火烧到来了,就往外逃吧! 外国空间有诸多优势,价格便宜,稳定性好,主机设置功能强大等等,但是国外主机市场同样也是"鱼龙混杂&quo

微信5.4你所不知道的事 X5浏览引擎提速50%-80%

微信5.4新增包括搜索公众号.识别图中二维码.面对面收钱等功能,但是你可知道新版微信X5浏览引擎提速了,提升50%-80%的网络传输速度及相同比例流量节省? 从X5浏览引擎开发人员得知,X5浏览技术基于对Webkit的深度优化,通过后台云加速及动态路由功能,可提升50%-80%的网络传输速度及相 同比例流量节省.新版微信依靠X5浏览技术,将用户每次点开网页链接的平均时间从5秒左右压缩至3秒以内,最快仅需1秒,加载速度明显提高. 而在流量节省方面给用户带来的利益感观更加明显.根据专业人士分析,每个

张小龙:关于微信你可能不知道的10件事

中介交易 SEO诊断 淘宝客 云主机 技术大厅 不管是互联网业界,还是非互联网领域的产品爱好者,对微信.微信团队以及张小龙本人都有不完全了解,因为张小龙甚少在公众场合出现,微信团队过去也只有在极客公园的活动上进行过分享. 2月底,微信负责人.腾讯副总裁张小龙接受了<商业价值>杂志和极客公园的采访,采访过程中聊了很多具有启发性的话题.我们将采访的内容整理成了数篇文章.本文是专访系列的第一篇,关于微信你可能不知道的10件事. 事实上,极客公园一直在跟踪微信的发展,在版本4.0 后,我们几乎每个版本

关于PHP你可能不知道的10件事

小编之前也曾报导过PHP开发人员容易忽略的几点精华,除了一些精华技术方法外,很多细微之处也是程序员们容易忽略的,下面我们为您总结了10个关于PHP你可能不知道的事情. 关于PHP更多内容,欢迎访问:PHP开发基础入门 1.使用ip2long() 和long2ip()函数来把IP地址转化成整型存储到数据库里. 这种方法把存储空间降到了接近四分之一(char(15)的15个字节对整形的4个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点).