他開發了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.pswp.cn/news/275708.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275708.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275708.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Onew積極開拓國際市場,為全球用戶提供全方位金融服務

當區塊鏈技術剛被提出的時候,金融被認為是最主要的應用場景之一,具體包括建立基于區塊鏈技術的銀行間點對點支付結算系統和跨境支付系統、在交易所運用區塊鏈技術實現股權的登記和轉讓等。 區塊鏈應用于金融領域有著天生的絕對優勢,主觀來看&…

高通董事長:努力降低智能手機價格

高通董事長:努力降低智能手機價格 高通公司董事長兼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代碼整潔有什么用&#…

[轉]讓你賺大錢成富翁的4個投資習慣

本文轉自:http://bbs.jrj.com.cn/msg,68723793.html 第一條:對自己進行投資  這是最大最大的投資,當然收獲也是最為豐盛的。藝不壓身,這句話非常有哲理。朋友今年27歲,可是毫不夸張地說,他已經具有了百萬…

thymeleaf th:href url傳遞多參數

<a th:href"{/teacherShowMember(class_id${class.classId}&#xff0c;class_name${class.className})}"></a> thymeleaf使用&#xff08;,,&#xff09;的形式解析多個參數,結合${}放置變量十分方便 傳統URL傳遞多參數使用&#xff1f;&拼接 <a…

spring 加載java類_在Spring中基于Java類進行配置的完整步驟

在Spring中基于Java類進行配置的完整步驟發布于 2020-7-7|復制鏈接基于Java配置選項&#xff0c;可以編寫大多數的Spring不用配置XML&#xff0c;下面前言JavaConfig 原來是 Spring 的一個子項目&#xff0c;它通過 Java 類的方式提供 Bean 的定義信息&#xff0c;在 Spring4 的…

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

大家好&#xff0c;我是若川&#xff0c;誠邀你加群長期交流。今天分享一篇用得上的 node 庫。下篇。鏈接地址&#xff1a;https://github.com/huaize2020/awesome-nodejs。上篇是&#xff1a;2021 年最值得了解的 Node.js 工具?前言&#xff1a;前端時間分享了這些node開源工…

技術點

前端所用技術 后臺頁面 感謝 H-ui、FlatLab 提供靜態頁面支持Ztree&#xff1a;jQuery樹插件DataTables&#xff1a;jQuery表格插件Layer&#xff1a;web彈層組件Distpicker&#xff1a;中國省市區地址三級聯動插件KindEditor&#xff1a;富文本編輯器 簡潔方便 沒UEditor那么多…

掃描java類文件_java遞歸與非遞歸實現掃描文件夾下文件的實例代碼

java遞歸與非遞歸實現掃描文件夾下所有文件java掃描指定文件夾下面的所有文件&#xff0c;供大家參考&#xff0c;具體內容如下掃描一個文件夾下面的所有文件&#xff0c;因為文件夾的層數沒有限制可能多達幾十層幾百層&#xff0c;通常會采用兩種方式來遍歷指定文件夾下面的所…

【阿里內部應用】基于Blink為新商業調控打造實時大數據交互查詢服務

基于Blink為新商業調控打造實時大數據交互查詢服務 案例與解決方案匯總頁&#xff1a;阿里云實時計算產品案例&解決方案匯總從IT到DT、從電商到新商業&#xff0c;阿里巴巴的每個細胞都存在大數據的DNA&#xff0c;如何挖掘大數據的價值成為搶占未來先機的金鑰匙&#xff0…

Vite 的好與壞

大家好&#xff0c;我是若川&#xff0c;誠邀你進群交流學習。今天分享一篇關于Vite的文章。學習源碼系列、面試、年度總結、JS基礎系列。全文 3000 字&#xff0c;歡迎點贊關注轉發一、Vite 是什么2020年4月&#xff0c;尤大大發了這么一個推&#xff1a;隨后&#xff0c;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 …

這10道springboot常見面試題你需要了解下

1、什么是Spring Boot&#xff1f;多年來&#xff0c;隨著新功能的增加&#xff0c;spring變得越來越復雜。只需訪問https://spring.io/projects頁面&#xff0c;我們就會看到可以在我們的應用程序中使用的所有Spring項目的不同功能。如果必須啟動一個新的Spring項目&#xff0…

Silverlight中使用MIRIA進行觸屏編程

Silverlight for Windows phone7中可以使用XNA提供的功能進行觸屏編程&#xff0c;不過暫時還沒有網頁Silverlight的XNA移植。經過搜索發現MIRIA這個開源項目http://miria.codeplex.com/ 可以在Silverlight中實現Touch、Gesture的功能。 用法如下&#xff1a; 1、項目中引用MIG…

React 核心開發者 Dan Abramov 訪談實錄

大家好&#xff0c;我是若川。面試、學習源碼系列、年度總結、JS基礎系列譯者注&#xff1a;本譯文是在「在線對話 React.js 核心開發者」一個半小時直播的基礎上進行的原文翻譯&#xff0c;包括了直播中的所有問答內容&#xff0c;盡可能保留了 Dan 回答的中心語義&#xff0c…

python ev3圖形化編程軟件下載_mPython(圖形化編程軟件)

mPython是盛思技術團隊在BBC官方原版PythonEditor基礎上、拓展開發的應用軟件。可以進行可視化代碼編程&#xff0c;有hex、python、blockly三種代碼讀寫等功能。功能介紹1、不依賴網絡&#xff0c;可離線安裝使用2、支持hex、python、blockly三種代碼的讀寫3、blockly模式下支…

02-15 GUCCI 我喜歡的

我覺得&#xff0c;GUCCI是低調的奢華&#xff0c;價格不是很高&#xff0c;容易接近&#xff0c;符合我的風格&#xff0c;是現階段我的選擇 樣式我喜歡 希望我的生活質量步步高升&#xff0c;將來不再為追求物質生活而奮斗。 轉載于:https://www.cnblogs.com/yd1227/archive/…

php 批量修改mysql 數據表,字段 字符集編碼

$sql"SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA 數據庫名稱";$r$pdo->query($sql,2);foreach($r as $v){//if($v[TABLE_NAME]!monxin_index_user){continue;} 代碼來源 夢行云軟件$sql"alter table ".$v[TABLE_NAME]." conver…