摘要: 最近, 来自 Facebook 的 Lee Byron (@leebyron) 在Hashnode上主办了一场 AMA( Ask Me Anything )。 这里提出了许多有趣的问题,并且 Lee 透露了一些关于 Facebook 如何使用 React 、GraphQL 、和 React Native 的惊人事实与细节。
最近, 来自 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 之间还是有许多区别的。阅读 此处 的回答可以知道更多。
我希望你能喜欢这份非常简短的总结。 详细的回答与讨论请移步 AMA 页面。
相关推荐
标题 "钩子优先的最小GraphQL客户端" 暗示我们关注的是一个专注于使用JavaScript Hook机制构建的轻量级GraphQL客户端。在JavaScript开发中,Hook是一种在函数组件中使用状态和其他React特性的方式,自React 16.8版本...
在VueConf 2017大会上,一个关于GraphQL客户端使用的示例被提出并分享,这个示例主要聚焦于如何在JavaScript开发中,特别是在Vue.js框架内集成和利用GraphQL这一强大的查询语言。Vue.js是一个轻量级但功能强大的前端...
它起源于2012年,起初作为Facebook内部的一个项目进行开发,并在2015年对公众发布。2018年11月,Facebook将GraphQL项目贡献给了新成立的GraphQL基金会,该基金会隶属于Linux基金会,表明了GraphQL正式成为了一个活跃...
总结来说,`nanogql` 是一个适用于 JavaScript 开发的轻量级 GraphQL 客户端库,提供了基本的查询、变异和订阅功能,适合在对体积和性能敏感的项目中使用。通过了解和使用 `nanogql`,开发者能够更好地理解和利用 ...
Facebook主要使用React.js作为前端框架,这是一种由Facebook开发的JavaScript库,用于构建用户界面。React通过组件化的方式简化了UI的开发和维护。源码中还会包含Redux或MobX等状态管理工具,用于处理复杂的应用...
而GraphQL是一种查询语言,由Facebook设计,用于API以更高效地获取和更新数据。 1. **React基础知识**: - React组件:React的核心概念是组件化,它允许开发者将UI拆分为独立、可重用的代码块,每个都有自己的逻辑...
2. **解析器**:将GraphQL查询字符串转换为内部表示,以便执行和分析。 3. **执行引擎**:执行解析后的查询,与GraphQL服务器通信并返回结果。 4. **类型定义**:允许开发者定义与服务器schema对应的F#类型,从而...
尽管GraphQL最初是为了解决Facebook内部的问题而诞生,但它现在已经成为了一个独立的、由Linux基金会指导的开源项目,被广泛应用在各种规模的企业中。 GraphQL并不是图形数据库查询语言,而是一种描述API的语法,...
GraphQL是由Facebook开发的一种API查询语言,它允许客户端指定他们想要获取的数据,从而解决了RESTful API中过度或不足返回数据的问题。GraphQL通过定义类型系统(包括对象类型、接口、枚举、联合类型等)来描述数据...
在本“herm-workshop”研讨项目中,我们将探索如何使用现代的GraphQL和React技术构建一个端到端的Web应用程序。这个项目对于那些希望提升其前端开发技能,特别是对GraphQL和React感兴趣的开发者来说是一个极好的学习...
在advReact项目中,我们将学习如何使用GraphQL与后端进行通信,包括创建查询、变异和订阅。 **Apollo Client**: 在React中集成GraphQL通常使用Apollo Client,这是一个强大的库,提供状态管理、缓存和优化功能。...
GraphQL是一种由Facebook开发的查询语言,用于API,它允许客户端定义需要的数据结构,从而提高了数据获取的效率和灵活性。在Web开发中,GraphQL Web客户端扮演着至关重要的角色,它们简化了与GraphQL服务器的交互,...
GraphQL由Facebook内部于2012年开发,然后于2015年公开发布。 它取代了REST作为API设计范式,并且正成为暴露Web服务器数据和功能的新标准。 在本教程中,我将学习如何完全从头开始构建惯用的GraphQL服务器。 我将...
通过学习和使用这个插件,开发者可以更好地利用GraphQL的强大功能,定制化获取和管理WordPress站点数据。同时,了解项目中的技术栈,如Babel、Yarn和Dataloader,对于提升Web开发技能和理解现代前端工作流程也...
GraphQL是一种由Facebook开发并公开的API查询语言,用于高效地获取和更新数据。它允许客户端定义需要哪些数据,并且只返回那些数据,避免了传统REST API中过度获取或不足获取的问题。GraphQL以其灵活性、高效性和...
GraphQL是一种由Facebook开发并开源的数据查询和操作语言,它为API提供了强大的查询能力,允许客户端按需获取数据,避免了过度获取或不足获取的问题。 GraphQL服务器通常由多个组件构成,包括解析器、执行引擎和...
Relay是Facebook推出的一个基于GraphQL的前端开发框架,其核心组件之一就是`Relay Compiler`。这个编译器在前端开发领域扮演着至关重要的角色,它将开发者编写的使用GraphQL查询语句的React组件转化为服务器可以理解...
GraphQL 是一种由 Facebook 推出的 API 查询语言,它允许客户端指定他们需要哪些数据,从而提高了数据获取的效率和灵活性。在传统的 RESTful API 中,客户端可能需要多次请求才能获取到所有需要的数据,而 GraphQL ...
为了深入了解 Venia,你应该阅读 `README.md` 文件,了解其安装和使用方法,然后查看 `src/` 中的源代码,学习其内部实现。此外,尝试在 `examples/` 中的示例代码基础上构建自己的查询,有助于更好地掌握 Venia 的...