React.js: The Documentary 一起学英语

Time Subtitle Machine Translation
0s foreign 外国
11s [Music] [音乐]
28s fox jumps over the lazy dog 狐狸跳过懒狗
33s this is react podcast I'm chantastic today we're going back way back back to 这是 React 播客 我 今天非常棒 我们要回到
40s the beginning of react 10 years in the rear view mirror it may React 的开始 10 年从后视镜看 它可能
45s feel like react was always going to succeed did a framework by Facebook was 感觉 React 总是会 成功 确实 Facebook 的框架
50s too big to fail but this isn't that kind of story in fact there were many times 太大而不能失败,但这不是 那种故事,事实上
55s in reacts history where it seemed like it wasn't going to succeed at all 在 Reacts 历史上有很多次看起来 它根本不会成功,
1:00 so what happened how did react go in 10 years from looking Dead on Arrival to 所以发生了什么反应在 10 年内如何发展 从看起来 Dead on Arrival 到
1:07 becoming the dominant front-end JavaScript framework that it is today 成为今天占主导地位的前端 JavaScript 框架
1:12 it starts at Facebook in 2011 jQuery and backbone are dominating front-end 它于 2011 年在 Facebook 开始
1:17 JavaScript but more opinionated tools like Ember angular knockout are already -
1:23 on the scene in the outside world Gangnam Style has just been uploaded to Gangnam Style 刚上传到
1:28 YouTube Call Me Maybe is topping the charts and the freshest meme is the YouTube Call Me Maybe 就高居 榜首,最新鲜的 meme
1:33 overly attached girlfriend in Internet years it's basically been an eternity so 是互联网时代过度依恋的女朋友, 这基本上是永恒的,所以系好
1:38 strap in set yourself away enable that do not disturb because this is quite the 安全带让自己走开吧 请勿打扰,因为这完全是
1:44 Underdog Story foreign Underdog Story foreign
1:54 [Music] but this one doesn't [音乐] 但这个不是
1:59 [Applause] [Music] [掌声] [音乐]
2:03 just keep it on with this testing one two testing 只是继续进行此 测试一两个测试
2:14 [Music] foreign [音乐] 外国
2:19 [Music] [音乐]
2:36 work at Facebook I told my mom I was like really excited The Social Network 在 Facebook 工作 我告诉 我的妈妈, 我真的很兴奋社交网络
2:40 the movie had just come out and she had you know seen it recently and she was 这部电影刚刚上映,她让 你知道最近看过它,她
2:45 actively discouraging me from joining because she was like Mark Zuckerberg 积极劝阻我加入, 因为她说马克扎克伯格
2:49 doesn't seem like a very nice boy Facebook in the time I was there was I 看起来不像一个非常好的男孩 Facebook 在 我在那里的时候,我
2:54 don't think they'll be anything like it ever again it was certainly not like 认为他们不会再像现在 这样了,这肯定
2:57 anything that I had experienced before in fact just a couple months after I 不像我以前经历过的任何事情, 事实上,就在我
3:01 joined Kanye West came to visit Facebook's campus and he got up on a 加入 Kanye West 几个月后 ,他来参观 Facebook 的校园,他起床了
3:07 table in the cafe and you know wrapped a few bars and I was working mostly with 在咖啡馆的桌子上,你知道包裹了 一些酒吧,我主要和
3:12 this guy who had just graduated from college and I was trying to explain to 这个刚从大学毕业的人一起工作 ,我试图向
3:16 him you know I've worked these crap jobs in software at that point had been like 他解释你知道我 在那个时候从事过这些垃圾软件工作 就像
3:21 10 or 15 years nothing like this ever happens not to software Engineers you're 10 或 15 年 像这样的事情从来 没有发生在软件工程师身上 你是
3:27 my stressing your mama sues Mama say Mama say Mama Don the son JavaScript at 我在强调你妈妈起诉
3:32 the time I think was going through this little -
3:35 bit of an existential crisis as to whether it was like a real programming 编程
3:40 language or a toy programming language and so 语言 或玩具编程语言,所以
3:44 there was a lot of churn so you had jQuery was popular and moo tools was 有很多流失,所以你有 jQuery 很流行,moo 工具很
3:48 popular and there was so many different like warring Frameworks to try to get 流行,有很多不同的 框架,比如试图
3:52 the Mind share and there's a lot of similarities between them but each one 获得思想份额的交战框架,它们之间有很多 相似之处 但是每一个
3:55 had its kind of bespoke differences and none of them were actually really 都有其定制的差异,而且 它们都不是
3:58 fantastic for building really kind of complicated user interfaces and apps 真正适合构建真正 复杂的用户界面和应用程序的,
4:03 there was this trend towards more sophisticated applications that do more 有一种趋势是更 复杂的应用程序可以做更多的
4:07 stuff and at Facebook we still had a primarily sort of server rendered 事情,而在 Facebook,我们仍然有 一种主要的服务器 呈现的
4:12 technology stack which um you know one of the things that we 技术堆栈, 嗯,你知道我们
4:16 fought against for a really long time was just growing JavaScript bundle sizes 长期反对的事情之一 就是增加 JavaScript 包的大小,
4:20 so as we moved more and more stuff to the client the client got slower and 所以 随着我们将越来越多的东西 移到客户端,客户端变得越来越
4:24 slower so we actually swung the pendulum towards server-side rendering and 慢,所以我们实际上将钟摆 转向了服务器端渲染,并且
4:27 towards you know minimal amounts of JavaScript for a while and there was 在一段时间内让你知道了最少的 JavaScript,并且有一种
4:31 this feeling that we knew that what we were doing for client-side development 感觉,我们知道我们 是什么 为客户端开发所做的
4:35 wasn't working but also that server side wasn't going to get us all the way there 工作是行不通的,而且服务器 端也不会让我们一路走来,
4:40 so I think that was the kind of environment that react came out of 所以我认为这是
4:57 I joined Facebook back in 2010 I've been doing a lot of Open Source work 我在 2010 年加入 Facebook 时产生的那种环境,我一直 做了很多开源工作,
5:02 particularly in the JavaScript world I was a committer on the dojo.js toolkit 特别是在 JavaScript 世界我 是 dojo.js 工具包的提交者
5:07 back in the day which is one of the the granddaddies of the JavaScript movement ,它 是 JavaScript 运动的祖父之一,
5:11 along with prototype and jQuery I spent my first two years of Facebook 还有原型和 jQuery 我在 Facebook 度过了头两年
5:16 on the mobile team we had started off a big push to compete 在移动团队, 我们已经开始大力推动
5:21 with Apple and Google and we thought that our best chance of success as a 与苹果和谷歌的竞争,我们 认为我们作为一家公司成功的最佳机会
5:25 company was to go directly to the web and really push to build out the HTML5 是直接进入网络 并真正推动构建 HTML5
5:30 ecosystem so as part of that we developed myself 生态系统,所以 作为其中的一部分,我们 自己开发
5:36 two other Engineers called Vladimir khalestikov and will Bailey built a 了另外两名名为 Vladimir khalestikov 的工程师,Will Bailey 构建了一个
5:40 framework called bolt JS so named because we bolted together a bunch of 名为 bolt JS 的框架,之所以如此命名 是因为我们将我们每个人都喜欢的一堆东西用螺栓连接在一起
5:44 things that each of us liked bolt was basically more or less ,bolt 基本上或多或少是
5:49 Facebook's implementation of a client's head MVC I think it was like a pretty Facebook 对客户端 head MVC 的实现 我认为它是一个非常
5:53 good version maybe a better version of things like backbone and a couple of 好的版本,也许是当时存在 的主干和其他几个框架的更好版本,
5:58 other Frameworks that had existed at the time but it was born from a place of the 但它诞生于
6:04 specific constraints of Facebook it's the heart of your Facebook experience Facebook 的特定限制,它完全 是你 Facebook 体验的核心
6:09 completely rethought from the ground up we've been working on it all year 从头开始重新思考 我们一整年都在努力
6:13 and we're calling it timeline Facebook was one of the first ,我们称之为 时间线 Facebook 是第一批
6:18 big products that was really an experience more than anything else 真正提供体验的大型产品之一,
6:22 you're not trying to buy groceries or get tickets or anything like that on 你不是想买杂货 或买票或 在 Facebook 上的任何类似的东西
6:26 Facebook you really just want to be entertained and as such you know the 你真的只是想被 娱乐,因此你知道
6:31 user interface itself needs to be really pleasing bolt was not a tool belt it was 用户界面本身需要非常 令人愉悦螺栓不是工具 b elt 它
6:36 truly a application development framework something designed and meant 确实是一个应用程序开发 框架,
6:40 to build complicated interactive rich apps and was being used to build pretty 旨在构建复杂的交互式丰富 应用程序,并且在 Facebook 被用于构建非常
6:46 complicated very real products at Facebook at the time we ended up having 复杂的非常真实的产品, 当时我们最终
6:50 to essentially replicate most of Facebook 不得不基本上复制
6:53 all the various apps be it timeline chat news feed we had a whole photos app that Facebook 的大部分应用程序 timeline chat news feed 我们有一个我们构建的完整照片应用程序
6:59 we built and so obviously the team had to expand greatly like that so I think ,所以显然团队必须 像那样大幅扩展所以我认为
7:03 at some point we probably had maybe 25 Engineers working on all this between 在某个时候我们可能有 25 名 工程师在
7:08 building bold and building apps built on Bold and that's just on the mobile team 构建 bold 和构建基于 Bold 和 这只是移动团队
7:11 bolt was never the problem it was the architecture that would eventually break 的问题,螺栓从来都不是问题,
7:15 down for us as the the product itself got more complex and as we added more 随着产品本身 变得越来越复杂,随着我们向团队添加更多
7:20 Engineers to the team we didn't hit a wall but it started to get really really 工程师,我们并没有 碰壁,但架构开始崩溃了。 真的
7:24 hard to make changes and so you know that was around the time that Jordan was 很难做出改变,所以你知道 那是乔丹
7:29 on the ads team and he's like I wonder there's got to be a better way 在广告团队的时候,他就像我想知道 必须有更好的方法 你外国人
7:38 foreign
7:42 is an enigmatic figure he uh he's a little secretive so there's not much 是个神秘人物他呃他 有点神秘
7:48 that I know about him Jordan and I aren't necessarily we haven't 所以我对他知之甚少乔丹 我不一定我们
7:52 necessarily been in the spotlight much especially Jordan kind of shied away 不一定在聚光灯下很多 特别是乔丹
7:56 from spotlights since the early days Jordan was a product engineer at the 从早期开始就有点回避聚光灯 乔丹当时是一名
8:00 time working on ads and ads has one of the most complicated pieces of UI across 从事广告工作的产品工程师,广告拥有目前 整个 Facebook 上最复杂的用户界面之一,在
8:07 all of Facebook at the moment on the as team they were hitting much 团队中,他们正在触及
8:12 you know really hitting the limits of what you can do without react uh 你知道的很多东西,这确实触及了 你可以在不做出反应的情况下做的事情的极限 呃
8:16 complexity wise and just the developers ability to hold in their head and 复杂性明智,只是开发人员 能够牢记并
8:21 understand a bit of code that somebody else wrote and you know look at the 理解 其他人编写的一些代码,你知道看看
8:25 screen and say okay this code is doing that and I need to know why and Jordan 屏幕并说好吧,这段代码正在这样 做,我需要知道为什么,乔丹
8:29 had a lot of very interesting ideas around how you could take what we had 有很多 非常有趣的想法 ,关于如何利用我们
8:33 done in both and make it much more functional and make it more um ability 在这两个方面所做的工作, 使它更具功能性,并
8:36 to make it easier for it to scale with people's ability to understand large 使其更容易扩展,以适应 人们理解大型
8:40 applications and so we had a lot of ongoing dialogue and he would come back 应用程序的能力 ications 所以我们进行了很多 持续的对话,他会来来
8:43 and forth to us with various ideas how to change it I think one of the original 回回地告诉我们 如何改变它的各种想法我认为反应的原始
8:47 names for react was F bolt which is functional Bolt foreign 名称之一是 F bolt,它是 功能性的 Bolt 外语
8:55 to do it to solve some of the tricky Parts in bolts in an easier way so what 来解决一些问题 螺栓中棘手的部分以更简单的方式进行,所以
9:02 Jordan decided to do or at least the story that he had told me was Jordan 决定做的事情或者至少 他告诉我的故事是
9:08 hey wouldn't it be easier if any time anything happened in the app API State 嘿,如果 应用程序 API 状态中
9:14 changes user type something we just blow away the entire UI and we re-render all 发生任何事情改变用户类型,我们会不会更容易 去掉整个 UI,我们重新渲染
9:19 of it if you look at what every other 所有这些, 如果你看看当时其他所有
9:23 framework was doing at the time it was called two-way data binding and this was 框架在做什么,它被 称为双向数据绑定,
9:27 not that it was like forget about data binding we're not 这并不是说 忘记数据绑定,我们不会
9:31 going to do that at all anytime anything changes we're just going to re-render 去 随时执行任何 更改我们将重新渲染
9:35 and then there's an asterisk which says well we're not going to remember 然后有一个星号 表示我们不会记住
9:37 everything we're going to try to render as little as possible but conceptually 我们将尝试渲染的所有内容 尽可能少但从概念上讲
9:41 we're not going to manage these relationships between views and models 我们是 不会管理这些 之间的关系 视图和模型,
9:45 we're just gonna honestly I thought it was completely 我们只是 老实说,我认为
9:48 crazy at the time I was really down on Frameworks in general and I thought 当时我真的很不喜欢 框架,我认为
9:52 there was no way that was going to work to many people that seemed like magic it 这完全是疯狂的,我认为这对许多人来说是不可能的,因为 它看起来像魔法,
9:57 was so far outside of everybody's idea of how things should work and do work 它太遥远了 每个人 对事情应该如何运作的想法以及如何运作
10:01 that um yeah it took a lot of commenting ,嗯, 是的,它需要很多评论
10:07 [Music] I've been working at Facebook for 10 [音乐] 我已经在 Facebook 工作了 10
10:34 years now I met this person called Jordan walk 年,现在 我遇到了一个叫 Jordan walk 的
10:38 some people told me like he had an interesting project about JavaScript and 人,有人告诉我他有一个 有趣的东西 关于 JavaScript 的项目,
10:42 I may be interested and so I had this meeting with him and uh one thing he 我可能会感兴趣,所以我 和他开了这次会议,呃
10:47 asked me at the beginning of the meeting was what is the most difficult thing to ,在会议开始时他问我一件事,
10:53 do in the front end right now and I mean I was six months out of 现在前端最难做的事情是什么 ,我的意思是我当时六岁 离开
10:59 school I was like I don't know and the thing he told me is updates you need to 学校几个月我就像我不知道, 他告诉我的事情是更新你需要
11:05 find the dumb node that is going to change you need to like change the 找到将要改变的哑节点 你需要喜欢改变
11:09 listener to like the Click event and like remove it and like do all of this 监听器以喜欢 Click 事件并 喜欢删除它并喜欢 做这一切
11:13 which is like pretty complicated and then this was also like a massive source 这是我 这很复杂, 然后这也就像是
11:18 of bugs within the Facebook adbase I was like okay yeah you're right like Facebook 广告库中的大量错误来源, 我说好吧,是的,你是对的,
11:24 this is probably like the hardest thing and it was like I have a solution for 这可能是最困难的事情 ,就像我有解决方案一样,
11:28 this I was like okay this guy is crazy like 我觉得好吧 这家伙太疯狂
11:31 this is never going towards never going to be performance the meeting ended for 了 永远不会走向 永远 不会成为表演 会议
11:36 like a few weeks I forgot about the idea but uh one weekend I was like okay 结束了几周 我忘记了这个想法 但是呃 一个周末 我觉得好吧
11:41 maybe I should try this like maybe there's something to it 也许我应该试试这个 就像之前可能 有一些东西
11:44 [Music] before joining Facebook I walked on a [音乐 ] joining Facebook 我走
11:49 way to find your guilds in World of Warcraft and we basically need to search 在魔兽世界中寻找你的公会的路上 ,我们基本上需要
11:54 through like 20 000 yields and I did like a lot of uh performance work to 搜索大约 20 000 个产量,我确实 喜欢很多呃性能工作,
12:00 like be the fastest way to display possible when you change all of those 当你改变所有的时候,我喜欢成为最快的显示方式 那些
12:04 filters into this real time and I was like okay I spent like months full time 实时过滤器,我 觉得好吧,我花了几个月的
12:10 like working on like making this super performance let's try it with react and 时间来制作这种超级 性能让我们用 React 来尝试它
12:14 in practice uh it took me like half an hour to write it and it was actually ,实际上我花了 半个小时来写它,它是 实际上
12:20 like not as performant but like around the same order of magnitude as 不像性能那么好,但喜欢与性能 大致相同的数量级
12:24 performance and I was like mind blown and to this day I became like the ,我感到很震惊 ,直到今天我成为
12:29 biggest react fan in the world I was in the photos team and like spending all of 世界上最大的 React 粉丝,我 在照片团队,喜欢把我所有的
12:32 my working hours like trying to like use react on my own project in the photos 工作时间都花在 尝试喜欢 在照片团队中对我自己的项目做出反应,
12:36 team evangelizing I felt like it could change the world which is it 传福音,我觉得它可以 改变世界,就是这样
12:44 [Music] [音乐]
12:50 Jordan is making Headway on his project he's gotten others involved and they're 乔丹在他的项目上取得了进展,他让 其他人参与进来,他们
12:56 seeing the value but not everyone is impressed one manager started to take 看到了价值,但不是每个人都看到了 给一位经理留下了深刻的印象,开始
13:02 notice but saw Jordan's project is a distraction 注意到他,但看到乔丹的项目让人 分心,
13:06 so the athlete Byron to meet with Jordan and put a stop to it we get into a room 所以运动员拜伦与乔丹会面 并阻止了它,我们立即进入一个房间,
13:12 instantly I knew that this was going to be weird because we showed up with very 我知道这会 很奇怪,因为我们出现了非常
13:15 different energies so I'm showing up with this like okay Jordan I want to 不同的人 能量所以我 带着这个出现,好吧,乔丹,我
13:20 understand what's going on with your project but I also want to help make 想了解你的项目发生了什么, 但我也想帮助
13:25 sure that we are spending our time well and we're working on things that are 确保我们把时间花得很好 ,我们正在做的事情
13:29 gonna have longevity and solving problems we 将会长寿并解决我们
13:32 want to have and Jordan came in with like can I show you a demo of what I've 想要拥有的问题,乔丹进来了, 就像我可以向您展示我一直在做的事情的演示,
13:35 been working on like this is so exciting and it does this and it does that and 这太令人兴奋了 ,它做到了这一点,它做到了,
13:39 eventually like towards the end of this meeting with him I had to kind of admit 最终喜欢到最后 在 与他的这次会面中,我不得不
13:42 like he had something really compelled like I was now really interested in 承认他确实有某种被强迫的东西, 就像我现在真的很想
13:47 learning more about what what he was doing so Jordan's pitch to me was like I 更多地了解他在 做什么,所以乔丹对我的推介就像我
13:51 only want to invest in this and work on it if it's going to be something that 只想投资于此并为此努力 如果这将成为
13:54 people will use and if that's not going to be the case like sure we're not going 人们会使用的东西,如果 情况并非如此,我们肯定不
13:58 to do this he's like but I feel really strongly that all the ways we've been 会这样做,他说,但我非常 强烈地认为,
14:02 doing UI development up until now have been flawed whether they're a JavaScript 到目前为止,我们一直在进行 UI 开发的所有方式 有缺陷,无论它们是一个
14:06 library that doesn't quite work for us or whether it's like a 30 year old uh 不太适合我们的 JavaScript 库, 还是像一个 30 年的
14:10 tried and true model for doing UI application development like they all UI 应用程序开发久经考验的真实模型, 就像它们都
14:14 suffer from the same base problem Estate Management 遇到相同的基本问题 房地产管理
14:19 and I think this is the way forward and Lee if you could just like dig into ,我认为 这个我 这是前进的方向 ,Lee 如果你愿意深入
14:23 the code and learn more and try it and then come back and we'll talk about 研究代码并了解更多并尝试它 然后回来,我们将
14:28 this again um then we can figure this out it's like 再次讨论这个, 嗯然后我们可以弄清楚它就像
14:31 all right all right and so I did I dug around the code and it was um 好吧好吧,所以我做到了 我仔细研究 了代码,嗯
14:36 a little hard to understand uh but I eventually got to play with it got to ,有点难以理解,呃,但 我最终开始使用它来
14:40 build a couple of things and uh like had to admit coming away that like yes there 构建一些东西,呃, 不得不承认离开了,就像是的,那里
14:44 was something incredibly interesting there and that was how I got sucked into 有一些非常有趣的 东西,那就是 我是如何被吸引到
14:49 the project I ended up working on it quite a bit for the the next couple of 这个项目中的 我最终 在接下来的
14:53 months Lee brings us like rigor and sort of design mentality to these things that 几个月里做了很多工作 Lee 给我们带来了严谨和 某种设计心态来处理这些东西,
14:59 um really helped with the initial versions of react in terms of 嗯 ,在标准化方面确实帮助了 React 的初始版本
15:02 standardizing it and turning it from something that was kind of like an ugly 把它从 有点像一个丑陋的
15:06 baby that it just uh grown up at Facebook to something that really people 婴儿,它刚刚在 Facebook 长大, 变成
15:09 could approach from around the world [Music] 了世界各地的人们真正可以接近的东西 [音乐]
15:12 there were a couple of problems that I faced right away when trying to 我 在尝试时立即遇到了几个问题 g
15:20 understand the code base and build something Not only was the the set of 理解代码库并构建 一些东西不仅
15:25 tools and the mental models really different from what I was used to as a 工具集和心智模型 与我作为 UI 工程师所习惯的完全不同
15:28 UI engineer the syntax and the programming just like 语法和编程就像所
15:33 Concepts involved just the terminology was also really different my takeaway 涉及的概念只是 术语也非常不同我的 外卖
15:38 was you know okay the whole bid here was that this would be simpler but I can't 是你知道好的,这里的整个出价是 这样会更简单,但我
15:43 help but feel like this is really complicated mostly as a as a desire for 忍不住觉得这真的很 复杂,主要是因为
15:47 me to understand the model um but also with a hope that it would 我希望了解模型, 嗯,但也希望它会
15:52 kind of end up helping resolve some things I 好 最终帮助解决了一些我
15:56 wanted to build uh like a glossary like what are all the things the concepts and 想建立的事情,呃,比如词汇表, 比如所有的东西,概念,
16:02 then what are all the like actions or like verbs that are going on here and so 然后是这里发生的所有类似的动作或 类似的动词,所以
16:08 I I literally just like listed them all out and then I would go back to Jordan 我真的很喜欢把它们全部 列出来 然后我会回到约旦,
16:11 I'd go back to other people working on it and ask questions like did I get this 我会回到其他从事这项工作的人 那里,问一些问题,比如我做
16:14 right are these definitions right and they go yeah okay no you should really 对了吗,这些定义是否正确, 他们说的是的,好的,不,你
16:17 think about it that way and be like okay well that's not how this and it would go 真的应该那样考虑 好吧,这不是这样的,它会
16:20 back and forth and back and forth and I'd be honing these definitions and 来回来回, 我会磨练这些定义,
16:24 along the way we'd realize like oh this concept and that concept are the 一路上我们会意识到,哦, 这个概念和那个概念是
16:28 same we're going to name them one thing 一样的, 我们要命名 他们是一件事
16:31 instead of two things so unwinding all of this and essentially writing up what 而不是两件事,所以展开了 所有这些,基本上写出了
16:35 ended up being like a reimagining of the component life 最终 就像是对组件生命周期的重新构想
16:39 cycle and therefore sort of the entire front-facing API for react ,因此有点像 React 的整个 前端 API
16:45 and I was very happy to see like incredible enthusiasm around that Jordan ,我很高兴看到 难以置信的热情
16:48 was like oh this is amazing this really clarifies the ideas at that point a 乔丹说,哦,这太棒了,这真的 澄清了当时的想法
16:52 handful of other folks had gotten involved with the project too and then I ,其他一些人也 参与了这个项目,然后我
16:56 spent sort of the next month or so sort of piece by piece folding those into 花了大约一个月的时间, 把它们一点一点地折叠
17:02 place and pretty significantly changing the surface API of react in the process 到位,然后 在这个过程中相当显着地改变 了 React 的表面 API,
17:07 that was I think the first shift from this being a thing that existed mostly 我认为这是第一个转变,从 一个主要存在
17:13 in Jordan's head that other people were playing with to a thing that all of a 于 Jordan 头脑中 的东西,其他人正在玩的东西到一个所有人都在玩的东西
17:16 sudden felt owned by the whole team uh where team here is like a collection of 突然感觉整个团队都拥有了 嗯 ,这里的团队就像
17:21 UI Engineers scattered across Facebook who were sort of bought in on this 分散在 Facebook 上的 UI 工程师的集合, 他们有点认同这个
17:24 Vision who now felt that like we now have the same terminology we can use 愿景,他们现在觉得就像我们现在 拥有相同的术语,
17:28 when someone has a question anyone can jump in and answer it rather than only 当有人有问题时我们可以使用 任何人都可以 加入并回答它,而不仅仅是
17:32 Jordan that was the first big shift [Music] 乔丹,这是第一个重大转变 [音乐]
17:40 one of the first projects um that Greg was used for was the ufi 第一个项目, 嗯,格雷格被用于的是
17:46 the universal feedback interface which is basically the likes comments and ufi 通用反馈界面, 基本上是喜欢的评论和
17:52 shares at the bottom of each post this was still during Facebook's kind of web 底部的分享 每篇文章 都处于
17:56 era when Facebook on the web was like the sort of Big Driver of Engagement Facebook 的网络时代,当时网络上的 Facebook 就像 是一种参与新闻提要的大驱动力
18:00 news feed had a billion people hitting it every day ,每天都有十亿人点击它,
18:04 and was massively tuned for performance heavily interactive surface both on the 并且在
18:10 input side of course you're like clicking it to add likes you're typing 输入端进行了大规模的性能调整 当然你喜欢 点击它来添加喜欢你正在
18:13 into it to add comments but also on the receiving side we want comments to come 输入它来添加评论但是在 接收方我们希望评论
18:16 in live so as you're looking at it as a comment comes in we want it to just pop 能够实时出现所以当你把它看成一个 com 消息进来了,我们希望它就在
18:20 up right there and there was this product desire for that interface to 那里弹出,这个 产品希望这个界面
18:25 feel almost like a one-off chat thread and that was so cool at that time and as 感觉几乎就像一个一次性的聊天线程 ,这在当时非常酷,当
18:32 that started to work the second thread was well okay if this can work for this 它开始工作时,第二个 线程很好 好吧,如果这可以用于这种
18:36 really isolated sense of messaging then what if it could work for messaging as a 真正孤立的消息传递, 那么如果它可以用于整个消息传递又会怎样
18:40 whole and this was another really complicated ,这是另一个非常复杂
18:44 and fraught with bug surface area that was when a lot of the ideas in react 且充满错误的表面积, 当时反应中的许多想法
18:49 congealed the jsx syntax was introduced and some of the ideas about how to work 凝结了 jsx 语法是 介绍了 一些关于如何
18:55 with data and react sort of were clarified a couple of our UI Engineers 处理数据和做出反应的想法,如果我没记错的话 ,我们的几个 UI 工程师
18:59 along with the messaging team if I remember correctly Jing Chen was sort of 和消息传递团队得到了澄清 Jing Chen
19:04 the champion of this project realized that we needed a completely new way to 是这个项目的冠军, 意识到我们需要一个全新的
19:07 think about State too 考虑 State 的方式也是
19:12 so my name is John um and I'm a software engineer and the 如此,所以我叫 John um,我是一名软件工程师
19:15 product infrastructure team at Facebook is an application architecture designed ,Facebook 的产品基础架构团队 是一个围绕 React 的单向原则设计的应用程序架构
19:20 around react's principle of unidirectional data flow paired with onal data flow 与
19:25 flux react could go beyond the view layer to model entire applications this flux react 相结合可以超越视图 层来对整个应用程序进行建模,这种
19:30 shift in how to think about State paired very well with how react was thinking 对 State 的思考方式的转变 与 react 对更新 UI 的思考方式很好地结合在一起,
19:34 about updating UI and ended up being sort of the next chapter for how to 并最终成为 下一章的
19:39 think about react being more than just how do you model complicated UI but how 思考方式 React 不仅仅是 如何为复杂的 UI 建模,而是如何为
19:45 do you model sufficiently complicated applications like this was something 足够复杂的 应用程序建模,就像
19:48 that expanded the full screen and multiple touch points and had navigation 这样扩展了全屏和 多个触摸点并可以导航
19:51 to it and it allowed us to step into that next chapter I remember asking Jing 到它,它让我们 进入下一章我记得问过 Jing
19:56 like hey how's it going with this react stuff you know do you think this is 说,嘿,这个 React 东西怎么样了, 你知道吗,你认为这
20:00 going to work she's like yeah this is pretty good I'm pretty sure it's gonna 会起作用吗,她就像是的,这 很好,我很确定它会
20:03 work that was when I became more convinced 起作用,那时我变得更加 确信
20:07 [Music] thank you [音乐] 谢谢
20:17 [Music] [音乐]
20:21 Instagram joined Facebook in 2012. I think we had started calling it react by Instagram 于 2012 年加入 Facebook。我 想那时我们已经开始称它为 React,
20:27 then and there was a couple Engineers from Facebook that went to join Facebook 的几位工程师加入
20:30 Instagram to help them expand the product offering at the time Instagram Instagram 以帮助他们扩展 产品 ct 当时提供的 Instagram
20:35 was just an iOS and an Android app and they wanted to have a web presence as 只是一个 iOS 和一个 Android 应用程序, 他们希望在网络上
20:39 well foreign 也有 外国
20:43 [Music] 11 years in San Francisco it was a [音乐] 在旧金山 11 年,这
20:49 really fun made a lot of great friends but the the change of pace out in the in 真的很有趣,结识了很多好朋友, 但节奏发生了变化
20:54 the countryside is is great um it's just very peaceful and nice 在乡下是很棒的, 嗯,非常安静和美好
20:59 I went to Facebook straight at school I studied computer science undergrad and I 我在学校直接去了 Facebook 我 本科学习计算机科学并
21:03 got a master's degree Facebook was believe it or not the like cool place to 获得了硕士学位 无论你相信与否,Facebook 都是
21:08 work back in 2010 it was like this great product that like everybody used it was 2010 年工作的好地方它 就像这个很棒的 产品,每个人都在使用它,它
21:13 super cool on college campuses and I was really excited to work there 在大学校园里非常酷,我 很高兴能在那里工作,在
21:19 foreign 国外
21:23 I joined Facebook video the pitch was we're the third largest 我加入了 Facebook 视频宣传我们是
21:29 video site in the world after YouTube and Dailymotion I think and there was 继 YouTube 和 Dailymotion 之后的世界第三大视频网站, 我认为和
21:35 like one engineer working on it and like you get to be engineer number two and I 好像有一个工程师在做这件事,就像 你成为二号工程师
21:38 was like that sounds pretty cool we worked really closely with the iOS 一样,我觉得这听起来很酷,我们 与
21:41 photos team in the Android Photos team and we were building an Instagram killer Android Photos 团队中的 iOS photos 团队密切合作 ,我们是 bui 一个 Instagram 杀手
21:44 and nobody remembers this but it was called Facebook Camera ,没人记得这个,但它被 称为 Facebook Camera
21:48 one morning the photo scene got called into the office early they said like be 一天早上,照片场景很 早就被叫到办公室,他们说
21:52 at HQ at 8am and then the VP of engineering was like hey we bought 早上 8 点在总部,然后工程副总裁说, 嘿,我们买了
21:56 Instagram they're your new co-workers now and these were like our people that Instagram,他们是你的新人 现在是同事,这些人就像我们的人,
21:59 they were like our Fierce competitors you know we looked at them a little bit 他们就像我们的激烈竞争对手, 你知道我们有点把他们
22:03 as the enemy I'm sure they looked at us a little bit as the enemy they were a 当作敌人,我敢肯定他们有点把我们 当作敌人,他们是一个
22:07 really small team at the time they had their core fundamentals really nailed 非常小的团队 他们真正确定了核心基础知识的时间,
22:10 but there was a lot of stuff they needed to figure out that they did not have the 但是他们需要弄清楚很多东西 ,而他们没有
22:15 team to figure out along with their own and a big one of those was what does it 团队来弄清楚自己的东西 ,其中很大的一个就是
22:19 mean for Instagram to be on the web the web experience is really important for Instagram 意味着什么 在 web 上, web 体验对于
22:22 driving growth and so this was a pretty important priority and so me and this 推动增长非常重要,所以这是一个非常 重要的优先事项,所以我和这位
22:25 Designer Michael lumens started building all the web stuff and that's kind of 设计师 Michael lumens 开始构建 所有 web 的东西,这
22:30 where react enters the pictures when we started 就是 react 进入图片的地方 wh 然后我们开始
22:34 developing this website [Music] 开发这个网站 [音乐],
22:42 we were given this mandate to use client rendering so I went to the product 我们被授权使用客户端 渲染,所以我去了 Facebook 的产品
22:48 infrastructure team at Facebook which was run by like Tom Aquino product 基础架构团队, 该团队由 Tom Aquino 运营,产品
22:54 infrastructure's role was to support any team that needed help 基础架构的角色是支持任何 需要帮助的团队,
22:59 and do it in a way that you know your key indicators of success are going to 并在 你知道你 成功的关键指标的一种方式
23:04 be other teams saying yeah that really helped us you go to them and you kind of 是其他团队说是的,这真的 帮助了我们你去他们那里,你有点
23:08 consult the Council of Elders and they they give you their recommendation and I 咨询长老会, 他们给你他们的建议,我
23:14 said hey we need to do client rendering what do we do and the recommendation at 说嘿我们需要做 客户端渲染 我们做什么,当时的建议
23:18 the time was yeah we don't know we've got like three different things that 是是的,我们不知道我们 正在处理三个不同的东西,
23:21 we're working on you should go try one we had uh something called bolt Js 你应该去试试一个, 我们有一个叫做 bolt Js 的东西,
23:28 there was a second thing called jshtml and then there was this this thing 还有第二个 叫做 jshtml ,然后有一个
23:35 called react you wouldn't spoke to Jordan about using 叫做 react 的东西, 你不会和 Jordan 谈论使用 React,
23:39 react and he came and talked to me about potentially using both for it but I 他来和我谈论 可能同时使用它,但我
23:43 think he really really liked Jordan's ideas around functional programming the 认为他真的很喜欢 Jordan 的 想法 围绕函数式编程,
23:48 conceptual model of react was like crazy Innovative and it really really spoke to React 的概念模型就像是疯狂的 创新,它真的告诉了
23:52 me my background was in distributed systems I was not somebody that loved 我我的背景是在分布式 系统中,我不是一个喜欢
23:58 front end or thought front end was like doing things well so the fact that react 前端的人,也不认为前端就像把 事情做好,所以 React
24:02 came in with like a totally Fresh Approach and like didn't really care too 出现了 就像一个完全新鲜的 方法,并
24:06 much about existing best practices like I was I was on board with that so while 不太关心现有的最佳实践,就像 我在船上一样,所以当
24:11 I had evaluated all three I really just dove in on react to build a prototype 我评估了所有这三个方法时,我真的只是 投入了反应,首先构建了一个原型
24:14 first and that ended up shipping on instagram.com which was the second use ,结果是 在 instagram.com 上发布,这是有史以来第二次
24:21 of of reactant production ever and the first use of building a full application 使用反应物生产,也是 第一次使用端到端构建完整的应用程序
24:25 end to end in react
24:30 when I chose react for Instagram it was not well known within Facebook 当我为 Instagram 选择 React 时, 它在 Facebook 中并不为人所知
24:34 and it was this like kind of crazy science experiment ,这有点疯狂 科学实验
24:39 not even close by the time Instagram was and you know Pete was started playing 在 Instagram 出现时甚至还没有结束 ,你知道皮特开始
24:45 with it uh it was significantly better than it was in the early early stage uh 玩它,呃, 它比早期阶段好得多,呃,
24:50 but it still needed a ton of iteration we had to take this thing that was very 但它仍然 我需要大量的迭代, 我们不得不接受这个
24:53 much tied to Facebook's infrastructure which back then was a big giant PHP 与 Facebook 的基础设施非常相关的东西 ,当时它是一个巨大的 PHP
24:58 application and I had to go get that working in a Django application which is 应用程序,我不得不 让它在 Django 应用程序中工作,这是
25:02 a totally different system and what was key was not doing that once but making 一个完全不同的系统,什么是 关键不是只做一次,而是让它
25:07 that a repeatable process and and making sure that that pipeline didn't break I 成为一个可重复的过程,并 确保管道不会中断
25:12 think he hit a number of really interesting problems along the way which -
25:15 quite proved the fact that react was not quite ready for that scale and along the 一路上,
25:21 way Pete and the team that he was working with into that building a lot of Pete 和他的 团队正在构建许多
25:23 really interesting things [Music] 非常有趣的东西 [音乐]
25:28 foreign 国外,
25:50 some of these products ended up being fairly successful there were relatively 其中一些产品最终 相当成功,在相对
25:55 short time to to deliver a relatively high quality product that show that this 较短的时间内交付了一个相对 高质量的产品,这表明 这个
26:01 model could work and it was not just that but people liked developing using 模型可以工作,不仅 如此,而且人们喜欢使用
26:06 it and so that kind of spread and took off and especially if you got more and 它进行开发,所以这种模式传播开 来,尤其是当你得到越来越
26:12 more investment they came clear that this was 多的投资时 他们很清楚, 这
26:15 what we wanted to use and it was really ads that was kind of using Baltimore it 就是我们想要使用的东西,它确实是 广告,它在某种程度上使用了巴尔的摩,它
26:21 had a higher level investment more people working in that code base that 有更高层次的投资,更多的 人在
26:27 already knew it and more components so it was a harder shift to make 已经知道它的代码库和更多的组件中工作, 所以它更难转向
26:35 the ads team just before I joined ads from the mobile team had done a full 在我加入广告团队之前让广告团队
26:39 rewrite of the ads creation flow into bolt which took them I think upwards of 将广告创建流程完全重写为 bolt,我认为这花了他们六个月以上的
26:44 six months replacing a very old PHP application with what time was 时间 用当时被
26:50 considered a very modern JavaScript application but at the same time react 认为是非常现代的 JavaScript 应用程序替换了一个非常旧的 PHP 应用程序 但与此同时,
26:53 was also now actually deployed for real on Facebook and had a team that was React 现在也实际部署 在 Facebook 上,并围绕它组建了一个团队,
26:59 forming around it so we now had two viable Frameworks that were both live on 所以我们现在有两个 可行的框架,它们都在
27:03 Facebook both solving real problems we shouldn't have two especially two that Facebook 上运行,都解决了实际问题,我们 不应该有两个,尤其是两个
27:09 were similar similar enough to confuse people like if you looked at a code 相似到足以让人们感到困惑, 就像如果您查看代码,
27:12 their code almost looked identical but that worked really differently it would 他们的代码看起来几乎相同, 但工作方式
27:16 actually be an absolute nightmare if you had to work in both so we had to decide 却完全不同,如果 你 必须在两者中工作,所以我们必须
27:20 which which to use [Music] 决定使用哪个 [音乐
27:26 a lot of this was ended up being a conversation between myself and Jordan ] 很多这最终成为 我和乔丹之间的对话,
27:30 we did an evaluation of boredom a lot of performance-based stuff and trying to 我们对无聊进行了评估,很多基于 性能的东西并试图
27:36 figure out where the edge cases were on the pro side of react obviously there's 弄清楚 边缘情况在 反应的专业方面显然有
27:39 all the things that we know now it handles complexity way way more even 我们现在知道的所有事情它 处理复杂性的方式更多即使
27:44 when writing the as creation flow in bold we had already hit one place that 在用粗体编写 as 创建流程时 我们已经达到了一个地方,
27:48 you just could not do in Bolt without writing spaghetti code and you can do in 如果没有,你在 Bolt 中无法做到 编写意大利面条代码,你可以
27:52 react so we knew in the future even if it was only 10 of the experiences we 做出反应,所以我们知道将来即使 我们正在构建的体验中只有 10 个,
27:57 were building we're going to run into this problem again now it might only be 我们也会再次遇到 这个问题,现在它可能只有
28:00 10 unmaintainable but as you scale that across a company that is growing rapidly 10 个无法维护,但随着你扩展它 一家发展迅速的公司,
28:04 this becomes an absolute mess the cons of it on the other hand were that react 这变得一团糟 另一方面,它的缺点是
28:09 in a lot of ways was not battle tested yet there's a lot of things that simply 在很多方面的反应都没有经过实战测试, 但有很多事情
28:12 didn't work in react it couldn't handle forms they'd never done a text box and 在它无法处理的反应中根本不起作用 形式 他们从来没有做过文本框,
28:16 there's a lot of complexities around handing awkward form controls like radio 处理单选按钮等笨拙的表单控件有很多复杂性
28:19 buttons and so on that it messed up just performance issues where it would try ,它搞砸了 性能问题,它会
28:24 and re-render large blocks so they hadn't had to do all of the performance 尝试重新渲染大块,所以 他们不必做
28:28 improvements that obviously exist now on the organizational side that the other 现在在组织方面明显存在的所有性能改进, 另一个
28:33 con was that we had just done the six-month rewrite in both 缺点是我们刚刚完成了 为期六个月的重写,
28:37 um Facebook had done an IPO recently and the stock had 嗯 Facebook 最近进行了 IPO,
28:42 since IPO Facebook wasn't making enough money and 自 IPO 以来股票 一直没有 Facebook 没有赚到足够的钱
28:45 so the ads team is the team that makes you know that's where the money starts 所以广告团队是让你知道的团队,
28:48 if we stop for four months we're gonna have to tell everybody 如果我们停止四个月,那是
28:53 sorry no money for you so there was a lot of conversation back and forth about 钱开始
28:56 all this it was got very difficult initially a lot of the engineers that 的地方 最初非常困难, 很多使用螺栓的工程师,
29:00 used bolt including Shane realized just what you said like look we've invested 包括 Shane 都 意识到你所说的,就像我们
29:04 so much in this thing and it's it's really worked for all this stuff 在这件事上投入了很多,它 确实对所有这些东西
29:07 certainly we can work through the next set of challenges we're having so 都有效,我们当然可以努力 尽管我们面临着下一 组挑战,所以
29:10 initially there was opposition to react coming in and saying like how are you 最初有人反对做出反应 ,说你
29:14 gonna you know this new thing that's not even proven yet this is our business 怎么知道这个甚至还没有被证实的新事物, 但这是我们的业务,
29:18 this is really important when Jordan and I were working through it was definitely 这在乔丹和我工作时非常重要 通过它肯定是
29:22 uh some emotions uh there um and mostly I think it came from uh 呃一些情绪呃那里 嗯而且主要是我认为它来自呃
29:27 each of us having a lack of context of where the other one was coming from so I 我们每个人都缺乏 另一个人来自哪里的背景所以我
29:30 think there was a lot of talking past each other in the end Mike shroffer 认为最后有很多 相互交谈迈克 shroffer
29:34 stepped in and said look make the right technical decision make 介入并说, 做出正确的技术决策,
29:38 the right long-term decision and whatever it is 做出正确的长期决策 ,无论
29:43 you know I'll back you up but if you need to pause product development for 你知道什么,我都会支持你,但如果你 需要暂停产品开发
29:47 four months you can we all kind of just got in rooms and you know worked through 四个月,我们都可以 参与进来 房间,你知道经历了
29:52 all these things and got everything out in the air of you know what's a 所有这些事情,把一切都弄清楚 了,你知道什么是
29:55 technical problem what's an organization problem what's a financial problem uh 技术问题,什么是组织 问题,什么是财务问题,嗯
29:59 and uh kind of a computer understanding eventually ,嗯, 最终计算机的理解
30:03 um through uh through uh with lots and lots of coffee 嗯, 嗯,嗯,喝了很多很多咖啡
30:06 that the react was the right way to go but um it was not a straight line at all ,反应是正确的方式, 但嗯,这根本不是一条直线,
30:11 he ultimately was one of the biggest proponents of decision makers and ads 他最终是决策者和广告的最大支持者之一,在
30:16 switching all over everything to react and that doesn't happen in most 所有事情上都进行了反应 , 这在大多数
30:21 companies and most companies if that's your baby project you try to undermine 公司和大多数公司都不会发生,如果那是 你的婴儿项目,你会试图
30:25 the other the the upstart because you're you know you're really defensive over 破坏另一个暴发户,因为 你知道你真的对
30:29 your own thing that was not the vibe at Facebook at the time and I think that 自己的事情进行防御,而这在当时的 Facebook 并不流行 我认为
30:33 Shane in particular really exemplified that 尤其是 Shane 确实 证明了
30:38 there was still a lot of work to do on the ads creation flow tensions were 在广告创作流程上还有很多工作要做
30:43 mounting and the team was stuck here again to get them unstuck is Jing Chen -
30:50 we'd have this thorny management issue and a lot of people disagreeing with -
30:54 each other up and down the management chain on both sides of you know in ads 在广告
30:57 and in this product infrastructure group those building react and we'd send Jing 和这个产品基础设施组
31:01 in to talk to the engineers and everyone come out like patting each other on the 中,很多人在管理链上上下下彼此意见不一 每个 人都喜欢互相拍拍对方的
31:05 back full agreement a plan to move forward so she's great at building a 背完全同意一个前进的计划 所以她很擅长建立
31:09 consensus because she's able to drill into the important technical details 共识因为她能够深入 研究重要的技术细节
31:14 identify them really quickly and and get everyone talking about the same thing 真正快速地识别它们并让 每个人都谈论同样的事情
31:17 she obviously helped both build the product but she also made sure that 她显然 帮助双方构建 产品,但她也确保
31:21 every time we found a bug in react or just something that didn't handle yet 每次我们发现 React 中的错误或 只是无法处理的问题时,
31:25 she either stepped back from products and then just fixed the framework or she 她要么退出产品 然后修复框架,要么
31:30 went back to the team and said look we need two