一起走进React核心团队

Souleigh ✨ 等级 543 0 0

当我刚来FacebookReact团队工作时,我不确定接下来的工作会怎么样。表面看,React核心团队似乎很大!但事实证明,像Eli White和Sebastian McKenzie这样的人都在React Native团队。考虑加上那些维护开源库的维护者,比如Chakra UIFramer MotionReact核心团队人数似乎能填满整个体育场!但事实恰恰相反。React核心团队很小:

  • 塞巴斯蒂安·马克巴奇(Sebastian Markbage)

  • 卢娜·阮(Luna Ruan)

  • 丹·阿布拉莫夫(Dan Abramov)

  • 安德鲁·克拉克(Andrew Clark)

  • 布莱恩·沃恩(Brian Vaughn)

  • 里克·汉隆(Rick Hanlon)

  • 塞思·韦伯斯特(Seth Webster)

  • 克里斯汀·阿伯纳西(Christine Abernathy)和我自己。

虽然Dan是大多数人想到React时会想到的人,但Sebastian其实是仅存的“创始”团队成员之一。尽管Sebastian并未发明React,但他仍然是团队的“指南针” —— 他负责考虑每个新功能如何更好的融入。Dan和Andrew共同建立了Redux。Brian建立了React DevTools。里克(Rick)是一位高数的布道者。Luna负责Relay,并且是团队中唯一主修计算机科学的人!克里斯汀(Christine)与大学合作,立足React Native的教育工作。塞思是我们的团队经理。我负责文档和教材的工作。如果你深入了解这个团队,你会很惊讶的发现:Andrew是麦霸,Seth曾是个音乐人,Brian也在录歌(加分项:他的猫是非官方吉祥物。)

一起走进React核心团队

Rick热衷于参加社会活动,Dan会跳夜店style的舞。Christine看过漫威的每部电影,Luna和我都喜欢普洱茶。Sebastian则花了很多时间学习木工!在Facebook内部,React是庞大软件生态的一部分。这些项目不断相互影响,有开源也有闭源的。Facebook的工程文化就像解决方案的反应堆。React本身是内部的几个UI库之一,但他很快脱颖而出并开源。现在,尽管React启发了公司的其他UI框架,库和解决方案,但React核心团队的运作就像一个独立的精密实验室。尽管与标准机构的工作并不完全相同,但是在React团队的经历会让我想起W3C的情况。它几乎就像一个致力于使开发人员更轻松地编写一致、可响应、可重用UI的工作组。

一起走进React核心团队

当考虑将新的规范引入浏览器时,规范作者在完成API前需要很谨慎。每个API都是多个浏览器开发人员的承诺 —— 并且很可能是一个永久承诺。React团队会影响他们的工作,因此我们也需要很谨慎。一项功能的开发从深入的讨论和和谐的辩论开始。一旦功能完善,就会出现在Fackbook的“living lab”中进行测试。每个纳入RFC的特性都在经过社区测试前在内部经过测试,这能排除很多坏主意。尽管新的规范可能“破坏互联网惯例”(参考命途多舛的XHTML2),是否升级新版React完全处于开发者自愿,重点是易于迁移以及与现有库的兼容性。尽管有些特性可能难产,但长远看,仍可能取得成果。在15年,团队尝试使用worker提升性能。

结果并不理想 —— 数据传输的开销超出了预期。尽管实验失败,但他带来来很多启发 —— 如果可以将组件划分为在主线程上执行的组件和在工作线程上执行的组件,为什么它们不能在服务器和浏览器之间拆分执行?

五年后,这个想法构成了React团队几天前宣布的Server Components提议的基础。同样,在2018年,React团队与Prepack团队合作 —— 希望对组件进行编译时性能优化。这次合作耗时数月!最后,权衡利弊下,实验“失败了”。

一起走进React核心团队

但是,从那次实验中学到的东西为那一年晚些时候的Hooks设计提供了思路,它还显示仅靠编译时不足以优化性能。很多需要优化的代码都属于编译器可能不知道的动态条件。但是服务器可以!这也是两年后出现Server Components的另一种解读。当人们看到Dan上台演讲,或阅读Luna关于新JSX转换的release说明时,不会意识到:对于像Hooks这样的每一个完善的功能,能够成为release,在其背后还有许许多多特性甚至没到达RFC阶段。所有特性都必须等到完全准备就绪为止。

在此之前,只能给其他特性让路。在一个如此重视交付,并且交付的速度越来越快的行业,当你的承诺无法兑现时,这让人非常沮丧。但是这并不意味着没有进步:你有时间思考与计划,有时间实验与学习。即使暂时失败了,也会为成功的特性带来启发。即使你还没完成年初的预期工作,也要相信挫折和颠覆是常态,而不是例外,无论好坏,即使在React上也是如此。

React团队非常重视以正确的方式做正确的事。有时,这意味着无论是情感上还是技术上,都需要付出许多耐心。这也意味着向别人寻求帮助与建议,而不是试图独自做所有事情。这意味着要有信念,不能因为你没有新的特性产出,就意味着你没有提供价值。

收藏
评论区

相关推荐

25、react入门教程
25、react入门教程 25、react入门教程 0. React介绍 0.1 什么是React? React(有时称为React.js 或ReactJS)是一
Create React App
Create React App Create React App Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 createreactapp(ht
做了N+1个企业项目之后, 我总结了这些React必备插件
为了提高大家开发 React 项目的效率, 笔者结合自己的实际工作经验, 汇总如下React项目常用插件. 1. 状态管理 Redux JavaScript 状
一起走进React核心团队
当我刚来Facebook的React团队工作时,我不确定接下来的工作会怎么样。表面看,React核心团队似乎很大!但事实证明,像Eli White和Sebastian McKenzie这样的人都在React Native团队。考虑加上那些维护开源库的维护者,比如Chakra UI、Framer Motion,React核心团队人数似乎能填满整个体育场!但事实
做了N+1个企业项目之后, 我总结了这些React必备插件
为了提高大家开发 React 项目的效率, 笔者结合自己的实际工作经验, 汇总如下React项目常用插件. 1. 状态管理 Redux JavaScript 状
Hook 简介 – React
Hook 简介 _Hook_ 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 import React, { useState } from 'react'; function Example() { // 声明一个新的叫做 “count” 的 sta
Hook 规则 – React
Hook 规则 _Hook_ 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 Hook 本质就是 JavaScript 函数,但是在使用它时需要遵循两条规则。我们提供了一个 linter 插件(https://www.npmjs.com/package/
React的未来:服务端组件
作者 | Donovan So 译者 | 许学文 策划 | 蔡芳芳 服务端组件和 SSR 有哪些不同? 本文最初发布于 Medium 的 Donovan So 专栏,经 InfoQ 翻译并分享。 服务端组件是什么? 截至目前,我们对 React 组件的了解只是客户端组件,仅此而已。 然而,React 团队正在试验一个新的想法,那就是将 Reac
记录一下我离线依赖迁移安装的具体尝试过程
首发于 <a name"F7lHq"</a 第 1 次直接安装,不可行,因为是私有依赖,根本安装不上。<a name"elctO"</a 第 2 次流程:1. 拷贝依赖到项目目录 library 中1. 通过 webpack alias 别名的方式关联依赖<br /不可行,npm run start 运行报错,缺少依赖。 想想也是, 依
使用 State Hook – React
使用 State Hook_Hook_ 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。中使用下面的例子介绍了 Hook:import React, { useState } from 'react';function Example() { //
Hook 规则 – React
Hook 规则_Hook_ 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。Hook 本质就是 JavaScript 函数,但是在使用它时需要遵循两条规则。我们提供了一个 来强制执行这些规则: 只在最顶层使用 Hook不要在循环,条件或嵌套函数中调用 Hoo
React之集成测试 – 测试概览
你可以用像测试其他 JavaScript 代码类似的方式测试 React 组件。现在有许多种测试 React 组件的方法。大体上可以被分为两类: 渲染组件树 在一个简化的测试环境中渲染组件树并对它们的输出做断言检查。 运行完整应用 在一个真实的浏览器环境中运行整个应用(也被称为“端到端(endtoend)”测试)。本章节主要专
React之集成测试 –测试环境
本章节介绍了可能会影响你测试环境的因素,并包含某些场景下的建议。 测试运行器使用 ,, 等测试运行器能像编写 JavaScript 一样编写测试套件,并将其作为开发过程的环节运行。此外,测试套件也将作为持续集成的环节运行。 Jest 与 React 项目广泛兼容,支持诸如模拟 、 和 等特性。如果你使用 Create React App,且
面向初学者的 React 路由-React Router的完整指南!
因此,您正在尝试学习React.js。也许您甚至已经在其中构建了几个简单的项目。无论您是新开发人员还是有一定经验的人,都可能会发现自己必须开发具有不同页面和路线的Web应用程序。那就是React Router发挥作用的时候。什么是React Router?React Router提供了一种在React或React Native应用程序中实现路由的简便方法。入
如何在React Native和Expo中掩盖Text和TextInput组件
在本文中,我将向您展示如何在React Native和Expo中使用自定义蒙版,可用于iOS,Android和Web!我们将使用一个名为库,这是一个没有本机代码的完整javascript库,然后您可以在React Native环境的所有CLI中使用。](https://res.cloudinary.com/practicaldev/image/fetch/s