他开发了redux,昨晚字节一面却挂了?

大家好,我是若川,诚邀你进群交流学习。今天分享一次直播的记录。我写过redux源码文章。动手按照文中例子学习,我相信会有所收获。学习源码系列、面试、年度总结、JS基础系列


redux的作者是谁?Dan,他的全称叫做Dan Abramov,同时他也是React的核心成员之一

为什么我标题说Dan字节一面挂了呢?

因为昨天晚上字节的web infra团队连线了远在国外的Dan,并且提前收集了200多个网友的问题,从中精选了20几个,让Dan来给一一解答,在其中一个问题的回答中,Dan说他从来没用过Vue,hhhhh,所以有小伙伴就说搞了个段子


开场就是Dan的自我介绍(他竟然12岁就开始编程了,好家伙,这到22岁不直接有10年编程经验了?hhhh),然后就是接下来一系列的问题

Q1: 如何看待redux

我不会推荐任何一个库,要看使用场景吧。比如针对数据和缓存的库,就该用对应的库

Q2: 很多开发者认为react的入门很难,有没有什么快速上手的方法

我认为这取决于大家为什么认为React难,可能难点不同,因为你刚学javascript,这是你的入门,那就会觉得React很难。对于其它库例如Vue,你可以运用一些已经封装好的方法,慢慢的使用中你可以学会一些东西。而react你一上手就要编程,这就是难点所在。如果有人觉得入门很难的话,可能就意味着他们不知道怎么去做一个单页的应用程序,可能不是react本身的问题,但他们会认为是react难以理解的问题。可以先把javascript熟悉了,再来用React肯定就很容易了。

Q3: 对于已经开始用react的人,给一些建议避坑

很重要的一点就是你要用Hook的话,我们推荐使用正确的方法把他们引入你的项目当中。对于react来说有两点,一点是可模仿性,新手可以去学别人的库,参考着去学习。另一点就是对于react渲染来说,你可以把他想成是一个计算,你不需要做很多工作,你只需要返回你需要的react UI即可,这很重要

Q4: 现在react更多关注的是函数编程,js却不是这样的

我认为react的确比其它工具更加偏向于函数,但真正喜欢函数编程的开发者会认为react并不是一个函数编程的工具。我们也不会把组件分解成一个个很小很小的函数。React其实是借用了一些函数的理念,并且基于函数,但不完完全全是一个函数编程工具

Q5: 现在前端发展迅速,你是怎么跟上技术发展速度的

我不是这样想的,但有可能是我没有跟紧潮流,可能是每隔几年就有这样的趋势,但很多像现在的新技术跟以前的技术概念其实很相似,这种情况下,我不会被这种新兴的技术惊到,因为他们对我来说没有什么太大的不同,所以这其实就是对老事物一种新的理解,我们围绕一些基本概念做一些开发而已(咳咳,既凡尔赛,又有道理)

Q6: react在未来如何进步呢?

你认为现在存在哪些重大的问题呢?对我来说我会注意到很多问题都是不同的,不同的问题用不同的手段去解决,其中一个问题比如说,

动画领域我们还没有涉足,很多ui框架会针对一些不同的问题提供一些解决方案,我的感觉是这些领域看起来不一样,但其实都类似,我们可以互相结合。以后我们可能会有一个组件工具,或者提供更多的功能,这些功能是紧密结合的,这是我们希望的。

Q7: Concurrent mode,从18版本开始最新被放出来的模式,设计时面临的挑战有哪些

我想说当前还没有被发行出来,所以我们可以去官网看一下blog,上面有关于版本18更多的信息,关于他有什么内容,信息等等。我们现在有相关的工作小组,并且每天从社区邀请50个人左右帮我们一起合作去发行18版本,保证整个生态系统和他发行的版本是一致的,我们在这方面已经有了很多的讨论,大家都可以阅读,评论,获取更多的信息。我们所做出来的一个大的改变就是我们没有mode了,它不叫concurrent mode,而负责的是render的一种机制,他不会有一个延长等待的时间,比如你如果有输入,他也可以同步的处理,其实他是一种同步多线的处理,这也是我们一直想攻克的难关。这才有了我们现在的18 Alpha版本

Q8: 很多人会将react跟vue做对比,你是怎么看待这两个框架的

我自己没用过vue的(what???React核心成员之一竟然没有用过Vue,此处@尤大),所以没法做很细节和全面的对比,从设计方法上来说,我们存在一些区别,比如vue直接改变状态,这有一些好处,你可以随心所欲的想写代码就写代码,很多人都很喜欢这样的方式,但对于我们来说,我们会做一些transition,我们方式不一样,所以从技术来说我们有很大的差异,是两种完全不同的方向。vue可能是基于50年的编程的沉淀,对于我们来说基于我们自己的做法,当然他们的做法在技术上来说也是很棒的,vue更多会用一些实用的技术解决实用的问题,比如提供更加便利的动画的解决方案,更便利的模板,但对于react来说,我们不想去做一些我们没有办法充分相信的解决方案,所以我们给出的东西可能没有那么直接便利,比如我们想做动画功能的话,我们并不会去标准化一些存在的东西,我们会有自己对于动画的想法,这跟现在很多框架都是不一样的,vue可以更快的拿到你所想要的,但react我们有更丰富的库,你就可以学会怎么去做这些事,这就像安卓和ios一样,ios其实很多功能都不包括的,但是他可以帮助你可以更好的完成一些事情。

Q9: vue3停止用flow了,react还用flow?

我并不认为这是一个很关键的问题,我认为这主要取决于库本身是怎么写的。他更多的是关注框架本身如何建立的,跟用户没啥关系,他并不会影响用户使用react的过程,我们并不在意这个点,我们并不是不能改变,只是不太值得

Q10: 你对一些新框架有什么看法,他们都没有使用vdom

我并没有多么细致的使用过这些工具,没有什么深度的见解,的确有很多的设计他们是很棒的,而且大家都走的不同的路,可能是完全相反,对于vdom这个词我不太喜欢,大家理解都不太一样,我认为这个跟性能没什么关系,我不太使用这个称呼,因为这使人很困惑,他指的是UI的内存,我们想让他保留下来,因为他能给我们更多的选择。对于一些复杂的功能,我们的解决方式可能会使用UI的不同版本,比如最左边是0%,右边是100%,中间会有一个滚动条,在调整滚动条只需要调整帧就好了,我们如何产生这种帧,就需要很多的ui进行协助,这就需要vdom的协助,这和性能的关系不大。假设我们要看整个app的性能,需要看你每个组件的功能是什么,他可以做什么,看看app背后的代码是什么,而不是单纯对几行的代码做分析和解读。

Q11: 目前用的大多是vue和react,你对于前端来说如何看待五年后的前端领域

我对这个问题的理解是,ui代码有很多不同的方式,比如放在服务器上还是客户端上,如何去整理它,那我觉得在这方面 框架也可以解决所有的问题,我觉得next.js是可以把react相关的观念去简化,所以他有可能会取代目前的功能,如果大家对Server Component 感兴趣的话,你的思考模式是围绕组件进行的,这是可控的,那你也可以做出自主的决定,吧什么样的组件在服务器去运转,不会占用你太长的时间,代码也是一样的,他们会更加的清晰,你就不需要去思考你是在做渲染还是做别的事情,这是一种很不错的优化

Q12: 对于找工作的同学来说,什么样的科技公司更吸引人?

我觉得你身边的人比较厉害,你能学到很多东西,这是良性的工作环境,可以学习新的知识,而且还需要你的自主性会比较强,不能命令式的工作(其实当时弹幕里全是一个字:钱????!)

Q13: 说说你的个人经历,你刚加入facebook,如何学习react的相关知识的

react代码其实比较复杂,在最开始需要研究代码,去熟悉,主要还是去了解整个的架构,把它了解透彻了没问题了,就Ok了。还会给一些人提供帮助,我会在一些公开的平台上帮助别人解决问题,回答他们的问题,在那段时间阅读了各种人提出的问题,几千条,这是一个非常好的方法帮我熟悉自己所做的东西,帮他们解决问题,也对自己有帮助。

Q14: react核心团队或社区如何维护这么大的code

我们遇到很多有趣的挑战,我并不认为我们的code很大,我们也是在慢慢的学习如何运行这样的项目,我们有超过5000次的测试。react用户只会用来rendering,不会深入到我们库里。如果你去看我们的代码,我们可能会有一个老js和新Js(即源码文件中以.old.js或.new.js为结尾的文件),他们基本上是相同的,我们这么做是为了应对一些有风险的改变,我们没有看到回归,我们就会把新的改变复制到旧的当中,这听起来很奇怪,但效果还不错。

我认为facebook就像一个测试机器一样,我们会在工作中验证,我们看到了百分之一的回归,评论下降了1%,我们就花了一个月对各个组件做实验区检测,发现了一个bug并解决了。即使当时下降了1%,但是对于facebook来说是一个很大的损失。

Q15: 作为react用户,我们去看源码,是不是一个好的做法

我并不认为很有必要,因为很难去理解我们的源码,如果你直接去读,你可能会很困惑,因为你不了解底层的框架,有人跟你解释一下可能更好一些。我经常做的一件事,就是用一个debugger去看这些代码不同的去向,比如在chrome performance里看到函数代码的栈,你可以看到每一个函数发生的不同的事情,比如你在升级的时候就可以看到一些新的事件和功能,所以可以从性能这个方面看到这些基本的功能的目的是什么

Q16: 你是如何保持对react的热情的

我本身就很喜欢,react理念跟我对ui代码的想法很一致,我在facebook之前,在初创公司,当时直接用了react,当时不流行,但给我们工作带来了很大的便利,我们还可以清楚地看到各个功能的状态,我们经常问自己想在屏幕上看到的功能是什么,react就能解决当下这个问题

Q17: 如何像你一样优秀,前端好的学习资源分享

我并不确定我有多么优秀,如果你认为优秀可以做一个非常好看的app,那我并不是,所以说我并不是很确定大家想听到什么样的建议。

建议的话,我觉得你可以不用vue或react这样的框架去写一些ui框架,或者做一些小游戏,比如贪吃蛇,这样去促使你去做,即使他有一些复杂度,但能从中吸取一些经验

Q18: 休闲时间会做什么呢

偶尔玩玩堡垒之夜,但是也很久没玩游戏了,平时就听听歌、散散步

Q19: 对于中国开发者的建议

我觉得我不太确定一些事,我不知道react在中国多少人在用,在这个社区里,大家可以有不同的选择,非常感谢他们在翻译上做出的工作(此处@印记中文),我不太确定react在未来能否风靡中国,希望大家去多推荐一下react,让更多人了解到,我们将来做出更多的改变

Q20: 未来是否愿意会在中国的react社区更多得活跃一下

必须滴!

最后辛苦Dan啦,全程一个半小时一直在解答大家的问题,一口水都没喝。而且他回答问题都回答得非常详细,都尽可能地多说一些,所以远不止我记录的那么点文字,真的是很有爱了~ 期待下一次Dan与国内程序员的互动!!!也感谢 Web infra 团队提供的这次机会


最近组建了一个江西人的前端交流群,如果你是江西人可以加我微信 ruochuan12 私信 江西 拉你进群。


推荐阅读

我在阿里招前端,该怎么帮你(可进面试群)
毕业年限不长的前端焦虑和突破方法

前端抢饭碗系列之Vue项目如何做单元测试
前端使用puppeteer 爬虫生成《React.js 小书》PDF并合并

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》多篇,在知乎、掘金收获超百万阅读。

从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。

同时,活跃在知乎@若川,掘金@若川。致力于分享前端开发经验,愿景:帮助5年内前端人走向前列。

点击方卡片关注我、加个星标

今日话题

略。欢迎分享、收藏、点赞、在看我的公众号文章~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/275708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高通董事长:努力降低智能手机价格

高通董事长:努力降低智能手机价格 高通公司董事长兼CEO保罗雅各布近日表示,2011年高通除了继续与各方合作提供高端及各层次智能手机外,将更加致力于降低智能手机的价格。 手机将成为个人生活中心 作为移动通信芯片领域的霸主,高通…

mysql数据库的新特性_【数据库】MySQL新特性归档介绍

MySQL 8.0.17发布了,看了下release note,发现果真如之前预期的那样,恢复了redo log归档(redo log archiving)功能。之所以说是“恢复”,那是因为在InnoDB非常古老的版本(MySQL 4.0.6之前的版本)才存在,之后就取消了&am…

为什么同事写的代码那么优雅~

大家好,我是若川,诚邀你进群交流学习。今天分享一篇相对轻松的代码简洁之道。学习源码系列、面试、年度总结、JS基础系列内容出自《代码整洁之道》、Alex Kondov[1]的博文tao-of-react[2]和《Clean Code of Javascript》image.png代码整洁有什么用&#…

2021 年最值得了解的 Node.js 工具(下)

大家好,我是若川,诚邀你加群长期交流。今天分享一篇用得上的 node 库。下篇。链接地址:https://github.com/huaize2020/awesome-nodejs。上篇是:2021 年最值得了解的 Node.js 工具❝前言:前端时间分享了这些node开源工…

【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务

基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页:阿里云实时计算产品案例&解决方案汇总从IT到DT、从电商到新商业,阿里巴巴的每个细胞都存在大数据的DNA,如何挖掘大数据的价值成为抢占未来先机的金钥匙&#xff0…

Vite 的好与坏

大家好,我是若川,诚邀你进群交流学习。今天分享一篇关于Vite的文章。学习源码系列、面试、年度总结、JS基础系列。全文 3000 字,欢迎点赞关注转发一、Vite 是什么2020年4月,尤大大发了这么一个推:随后,2021…

Windows phone 7新开发工具发布

春节假期已经接近尾声. 马上第一个工作日就要来临. 春节真的不再是一个简简单单的节日. 有时让人感到欣喜 这意味这一年的忙碌都会因为这个节日的到来而画上一个终止符.面临一个不长也不短的假期.眼下的一年翻过去 新的一年即将到来. 似乎一切都可以重新开始. 有时又令人感到无…

opentaps mysql_opentaps 1.4 联接 mysql 笔记

opentaps 1.4 连接 mysql 笔记一、安装 MySQ 略...二、创建MySQL Database opentaps ERP CRM1.mysql -u root -h 127.0.0.1 -p 2.mysql>create database opentaps default CHARACTER SET utf8 COLLATE utf8_general_ci;3.mysql>create user opentaps;4.mysql>grant …

React 核心开发者 Dan Abramov 访谈实录

大家好,我是若川。面试、学习源码系列、年度总结、JS基础系列译者注:本译文是在「在线对话 React.js 核心开发者」一个半小时直播的基础上进行的原文翻译,包括了直播中的所有问答内容,尽可能保留了 Dan 回答的中心语义&#xff0c…

python ev3图形化编程软件下载_mPython(图形化编程软件)

mPython是盛思技术团队在BBC官方原版PythonEditor基础上、拓展开发的应用软件。可以进行可视化代码编程,有hex、python、blockly三种代码读写等功能。功能介绍1、不依赖网络,可离线安装使用2、支持hex、python、blockly三种代码的读写3、blockly模式下支…

python如何安装panda数据库_在Pycharm中安装Pandas库方法(简单易懂)

开发环境的搭建是一件入门比较头疼的事情,在上期的文稿基础上,增加一项Anaconda的安装介绍。Anaconda是Python的一个发行版本,安装好了Anaconda就相当于安装好了Python,并且里面还集成了很多Python科学计算的第三方库。比如我们需…

译文 | Vue 在哪些方面做的比 React 更好?

大家好,我是若川。在过去的五年中,我一直是一名 React 工程师。我爱React。我喜欢开发 React 应用程序。我认为它是目前最好的UI框架之一。但是,在这个领域有一些竞争对手。其中最大的是 Vue.js 。我以前玩过一些 Vue.js,但我认为…

web mp4第一帧_Web成帧器就在这里!

web mp4第一帧The Framer Team is pulling up it’s pants. I sniffed something cooking when they announced a public beta for Framer for web… FRAMER FOR WEB? Yes, I don’t know how they did it, but their powerful set of tools, plugins and animation controls …

Lucene学习总结之三:Lucene的索引文件格式(2)

2019独角兽企业重金招聘Python工程师标准>>> 四、具体格式 上面曾经交代过,Lucene保存了从Index到Segment到Document到Field一直到Term的正向信息,也包括了从Term到Document映射的反向信息,还有其他一些Lucene特有的信息。下面对这…

JavaScript 数组 API 全解析

在编程世界中,数组是指元素的集合。数组将数据作为元素进行存储,并在需要时将其取出。在支持数组的编程语言中广泛地采用了这个数据结构。这个手册会介绍 JavaScript 数组的所有知识。你将会学到复杂数据处理、解构、常用数组方法等内容。我为什么写这篇…

美学设计评价_死亡的孩子无法使用的设计美学

美学设计评价In the popular anime series, Soul Eater, Death the Kid is a Shinigami (Japanese death god) who vanquishes evil with his dual pistols, Liz and Patty. Although he’s strikingly powerful, his battles are often hindered by his obsessive-compulsive …

【送书】2021年哪些好书值得读(小姐姐配音)

大家好,我是若川。记得点上面的小姐姐再次录制的配音。为感谢大家一直以来的支持和肯定。不知道是今年第几次送书了。昨天送书的音频广受好评,没参与的可以参与。今天联合华章图书再送文中任选一本 * 3 包邮送,详细规则看文末。Web开发01《斯…

Flash获取html参数的方法

一. swf?传参 html代码:代码<html><head><meta http-equiv”Content-Type” content”text/html charsetutf-8″ /><title>as</title></head><body><object classid”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase”h…

方法重载_方法

方法重载Recently, I wrote an article about moving XD designs to Figma. It was a really interesting experiment and one that seemed to interest quite a lot of people.最近&#xff0c;我写了一篇有关将XD设计移至Figma的文章。 这是一个非常有趣的实验&#xff0c;似…

Node.js 框架设计及企业 Node.js 基础建设相关讨论

大家好&#xff0c;我是若川。19年我写的 lodash源码 文章投稿到海镜大神知乎专栏竟然通过了&#xff0c;后来20年海镜大神还star了我的博客&#xff0c;同时还转发了我的微博。时间真快啊。今天分享这篇Node.js的讨论。2021 年上半年早已过去&#xff0c;回顾 Node.js 在国内的…