一起走进React核心团队

Souleigh ✨
• 阅读 1537

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这