「首席架構師推薦」頂級網際網路公司的前端學習指南(2)

2020-12-21 首席架構師智庫

用戶界面-React

如果最近幾年有任何JavaScript項目在前端生態系統中掀起了一場風暴,那就是React。React是一個由Facebook的聰明人創建的開源庫。在React中,開發人員為他們的web界面編寫組件並將它們組合在一起。

React帶來了許多激進的想法,並鼓勵開發人員重新思考最佳實踐。多年來,web開發人員一直被教導要分別編寫HTML、JavaScript和CSS。React的做法正好相反,建議您用JavaScript編寫HTML和CSS。這聽起來像一個瘋狂的想法,但經過嘗試後,它實際上並不像聽起來那麼奇怪。作為前端開發場景的原因正在向基於組件的開發範式轉變。React的特點:

說明性的——你描述你想在視圖中看到什麼,而不是如何實現它。在jQuery時代,開發人員必須想出一系列操作DOM的步驟,才能從一個應用程式狀態切換到下一個應用程式狀態。在React中,只需更改組件中的狀態,視圖就會根據狀態更新自身。通過查看render()方法中的標記也很容易確定組件的外觀。功能-視圖是一個純粹的道具和狀態的功能。在大多數情況下,React組件由支柱(外部參數)和狀態(內部數據)定義。對於相同的道具和狀態,會產生相同的視圖。純函數易於測試,功能組件也是如此。在React中進行測試很容易,因為組件的接口定義良好,可以通過向組件提供不同的道具和狀態並比較呈現的輸出來測試組件。可維護性——以基於組件的方式編寫視圖可以促進可重用性。我們發現定義組件的proptype可以使React代碼自文檔化,因為讀者可以清楚地知道使用組件需要什麼。最後,您的視圖和邏輯在組件中是自包含的,不應該受到影響,也不應該影響其他組件。這使得在大規模重構過程中很容易對組件進行移位,只要向組件提供相同的支持即可。高性能——您可能聽說過React使用虛擬DOM(不要與影子DOM混淆),當狀態發生變化時,它會重新呈現所有內容。為什麼需要虛擬DOM?雖然現代JavaScript引擎速度很快,但從DOM讀寫卻很慢。React在內存中保持DOM的輕量級虛擬表示。重新呈現一切是一個誤導的術語。在React中,它實際上是指重新呈現DOM在內存中的表示,而不是實際的DOM本身。當組件的底層數據發生更改時,將創建一個新的虛擬表示,並與以前的表示進行比較。然後將差異(所需的最小更改集)打補丁到實際的瀏覽器DOM。易學-學習反應很簡單。與此相比,React API表面相對較小;只有幾個api需要學習,而且它們不經常更改。React社區是最大的社區之一,隨之而來的是充滿活力的工具生態系統、開源的UI組件以及大量的在線資源,可以幫助你開始學習React。開發人員經驗—有許多工具可以改進React的開發經驗。React Devtools是一個瀏覽器擴展,允許您檢查組件、查看和操作其道具和狀態。使用webpack熱重載允許您在瀏覽器中查看代碼更改,而不必刷新瀏覽器。前端開發包括大量的代碼調整、保存和刷新瀏覽器。熱重新加載幫助您消除最後一步。當有庫更新時,Facebook提供codemod腳本來幫助您將代碼遷移到新的api。這使得升級過程相對輕鬆。向Facebook團隊致敬,感謝他們的奉獻精神,使React的開發體驗變得非常棒。多年來,出現了比React性能更好的新視圖庫。React可能不是最快的庫,但就生態系統、整體使用體驗和好處而言,它仍然是最好的庫之一。Facebook也在努力加快反應速度,重寫了底層的和解算法。React引入的概念教會了我們如何編寫更好的代碼、更易於維護的web應用程式,並使我們成為更好的工程師。我們像這樣。

我們建議在React主頁上閱讀關於構建井字遊戲的教程,以了解React是什麼以及它的功能。更多深入學習,請查看評價較高的免費課程,React Router的創建者提供的React基礎知識,他們是React社區的專家。它還涵蓋了React文檔中沒有涵蓋的更高級的概念。Facebook的Create React應用程式是一個工具,可以用最少的配置搭建一個React項目,強烈推薦用於啟動新的React項目。

React是一個庫,而不是框架,它不處理視圖下面的層——應用程式狀態。稍後再詳細介紹。

預計持續時間:3-4天。嘗試建立簡單的項目,如待辦事項列表,黑客新聞克隆與純反應。你會慢慢地對它產生好感,並可能在這個過程中遇到一些問題,而這些問題不是React能夠解決的,這就引出了我們的下一個話題……

研究的連結

React Official TutorialReact FundamentalsSimple React Development in 2017Presentational and Container Components選擇

AngularEmberVueCycle狀態管理-Flux/Redux

隨著應用程式越來越大,您可能會發現應用程式結構變得有點混亂。整個應用程式的組件可能不得不共享和顯示公共數據,但沒有優雅的方式來處理React。畢竟,React只是一個視圖層,它並沒有規定如何在傳統MVC模式中構建應用程式的其他層,比如模型和控制器。為了解決這個問題,Facebook發明了Flux,這是一個應用架構,通過利用單向數據流來補充React的可組合視圖組件。在這裡閱讀更多關於Flux的工作原理。綜上所述,流量分布具有以下特點:

單向數據流-使應用程式更可預測的更新可以很容易地跟蹤。

關注的分離——通量體系結構中的每個部分都有明確的職責,並且是高度解耦的。

在聲明式編程中工作得很好——存儲可以向視圖發送更新,而不需要指定如何在狀態之間轉換視圖。

由於Flux本身不是一個框架,開發人員已經嘗試了很多Flux模式的實現。最終,一個明顯的贏家出現了,那就是Redux。Redux結合了Flux、Command pattern和Elm體系結構的思想,是目前開發人員與React一起使用的事實上的狀態管理庫。其核心概念是:

應用程式狀態由一個簡單的舊JavaScript對象(POJO)描述。

發送一個操作(也是一個POJO)來修改狀態。

減速器是一個純函數,它採用當前狀態和動作來產生一個新的狀態。

這些概念聽起來很簡單,但是它們非常強大,因為它們使應用程式能夠:

在伺服器上呈現它們的狀態,在客戶端啟動它們。

跟蹤、記錄和回溯整個應用程式中的更改。

輕鬆實現撤銷/重做功能。

Redux的創建者Dan Abramov非常仔細地為Redux編寫了詳細的文檔,並為學習基本和高級Redux創建了全面的視頻教程。它們是非常有用的學習資源。

視圖和狀態的結合

雖然Redux不一定要與React一起使用,但強烈推薦使用Redux,因為它們彼此配合得很好。React和Redux有很多共同的想法和特點:

功能組合範式- React組合視圖(純函數),而Redux組合純還原劑(純函數)。給定相同的輸入集,輸出是可預測的。

很容易推理——你可能聽過這個詞很多次,但它到底是什麼意思呢?根據我們的經驗,React和Redux簡化了調試。由於數據流是單向的,因此更容易跟蹤數據流(伺服器響應、用戶輸入事件),並且很容易確定問題發生在哪個層。

分層結構——app / Flux架構中的每一層都是純功能,職責明確。為它們編寫測試非常容易。

開發經驗——在開發過程中,我們花了很多精力來創建工具來幫助調試和檢查應用程式,比如Redux DevTools。

您的應用程式可能必須處理異步調用,如發出遠程API請求。redx -thunk和redx -saga就是為了解決這些問題而創建的。它們可能需要一些時間來理解,因為它們需要理解函數式編程和生成器。我們的建議是,只有在你需要的時候才去處理它。

React - Redux是Redux的官方React綁定,非常簡單易學。

預計時間:4天。egghead課程可能有點耗時,但值得花時間。在學習了Redux之後,您可以嘗試將其合併到您已經構建的React項目中。Redux是否解決了您在pure React中遇到的一些狀態管理問題?

Study Links

Flux HomepageRedux HomepageEgghead Course - Getting Started with ReduxEgghead Course - Build React Apps with Idiomatic ReduxReact Redux LinksYou Might Not Need ReduxAlternatives

MobX

相關焦點

  • 15 年架構設計經驗:我眼中的那些優秀架構師
    數據處理與應用的能力 領導與管理能力 為了助更多有架構師理想的程式設計師一臂之力,我將與極客大學聯合開設「 架構師訓練營 」第 0 期,把我多年的思考,經歷的關於架構的方法和實踐,架構師的成長和修煉都講給你聽。
  • 「首席架構師推薦」程式語言InfoQ趨勢報告
    本報告旨在幫助技術領導者做出中長期的技術投資決策,並幫助個別開發人員識別流行的程式語言,並選擇將他們寶貴的時間和資源投入到哪些新的程式語言學習和技能開發方面。該報告總結了InfoQ編輯團隊目前是如何看待程式語言領域中技術的採用和新興趨勢的,而不包括單獨報告的Java / JVM和JavaScript / Web開發。
  • 松鼠AI首席架構師 Richard Tong:每個學生都應該得到一對一的智...
    16日下午,松鼠AI首席架構師 Richard Tong 發表主題為「AI自適應教育的架構和策略」的精彩演講。Richard Tong 介紹了松鼠AI智適應教育的架構和策略,詳細闡釋了平臺架構的四個層面,並談到自適應平臺架構的願景是為每一位同學打造超級AI導師,這將使學習變得有效、高效、吸引人。
  • 用專業性與Hims&Hers競爭,數字製藥公司「Ro」推出網際網路醫療指南
    網際網路上,那些不正規的醫療知識總會帶來誤導,一些小病小痛也常會被誤導成重大疾病。正是在這個背景下,國內的線上問診平臺開始興起,類似丁香醫生、春雨醫生、平安好醫生湧現出來,為患者提供了一對一的專業醫療諮詢。
  • 那些當上品牌「首席 XX 官」的明星們,真的只是靠臉嗎?
    至此,董事長高曉松,執行長宋柯,首席內容官何炅「鐵三角」的架構構成。 不過,何炅同高曉松一樣以兼職身份擔任,並表示不會放棄在湖南衛視的主持工作。據悉,雖手握蝦米、天天動聽等音樂業務,但阿里音樂不甘心做「播放器公司」,這次何炅加盟,據業內人士分析應該會加深和湖南衛視以及天娛的合作。而圈內人脈廣泛的何炅,也將會為阿里音樂帶來更多的藝人資源。
  • 騰訊工業雲首席架構師餘弦:中國有機會主導全球工業網際網路發展
    來源:每日經濟新聞今日(4月28日),在由每日經濟新聞主辦的「聚焦新基建—中國工業網際網路的啟蒙年代」在線沙龍上,騰訊工業雲首席架構師餘弦介紹了新基建下騰訊對工業網際網路發展的思考。餘弦指出:「網際網路在發展早期的原始階段,解決的是廣泛連接的問題,主要是用於消除信息不對稱,當時的模式主要是C2C或者B2C。但發展十年後,很多企業成為了平臺的模式,比如滴滴、58等,通過搭建平臺連接少數的B端企業和C端用戶,去提供一些平臺化的服務。而第三個階段,我們稱之為產業網際網路(其中包括工業網際網路),是將B端更多的資源廣泛地連接到平臺上。
  • 為什麼前端是最適合設計師學習的編程技能「設計師的100個前端問題-001」
    如果你有遇到什麼關於前端或者開發相關的問題,也歡迎評論或者通過公眾號後臺告訴我, 說不定我就把它做成這個系列的其中的一期的內容.那麼這第一期的內容,我先從最最最基礎的開始,先和大家聊聊前端是什麼,順便呢和大家分享下,為什麼我認為前端是最最最適合設計師學習的編程技能,最後,我還要講一講,為什麼我覺得網際網路設計師需要去學習前端。
  • 回顧經典,Netflix的推薦系統架構
    這裡是「王喆的機器學習筆記」的第三十一篇文章。最近因為忙著書出版和DLP-KDD Workshop的事情,沒太多時間更新專欄,等過了這段時間再跟大家多聊聊。這篇文章我們回顧一篇經典博客,Netflix官方博客介紹的推薦系統架構,雖然文章發布已有六年, 但是現在回看起來我自己還是蠻驚訝的,因為Netflix的推薦系統架構居然到現在依然是主流。當然,框架中的諸多技術在不斷的迭代更新,因為近期與Netflix的很多同行有過交流,也可以更新一下框架中一些模塊的最新進展。
  • 推薦幾個大廠的前端代碼規範,你也能寫出詩一樣的代碼!
    「前端技術優選」關注我們哦!相信很多人都沒有逛 GitHub 的習慣,因此總會有開源信息的不對稱,有哪些優秀的前端開源項目值得學習的也不知道。初步前端與高級前端之間,最大的差距可能就是信息差造成的。看看每天都開源了哪些好的前端項目,還有用到的主流前端技術棧又是哪些,值得我去學習的。因此也收藏了不少好的開源項目,在此推薦給大家,每周會有一到三篇精華文章推送。
  • 水琴鈴(北京)聘:前端/後端/web工程師/特效/UI/劇情架構師
    與策劃、美術成員協作,在Unity3D平臺使用C#開發遊戲客戶端2. 根據產品需求,完成設計、編碼、測試任務3. 對所負責的模塊進行持續的跟進、優化要求1. 三年或以上遊戲或網際網路產品的前端開發經驗2. 具備優良的OOP語言功底,有C#/Java語言基礎3.
  • 英特爾首席架構師曬出多款獨顯:GPU 黃金時代到來
    來源:IT之家英特爾高級副總裁、首席架構師Raja Koduri 在推特上曬出了幾款英特爾獨顯,其中包括已經發布的新華三 XG310 PCIe GPU 擴展卡。Raja Koduri表示,英特爾 Xe-LP 微架構的數據中心GPU已經在生產中,基於Xe-HP的 GPU的也正在出樣。之後,Raja Koduri在回帖中表示,今年出現了很多的GPU新品,如A100、Xe LP、RTX 3X、Navi2、MI100、M1,這些產推動了GPU的發展。
  • 架構師不是你想的那樣!
    我職業生涯前期最典型的階段是在英極軟體(大連), 這是一家在大連只要有人提起就會「罵娘」的公司, 因為現在網際網路行業很普遍的 996, 其實我在英極的時候就早已習以為常了, 那時候是 2006 年。 很多人都埋怨累, 我聽說有的人入職之後,第二天就離職的。
  • 「首席架構師推薦」一系列很棒的的瀏覽器端JavaScript庫資源(5)
    機器學習ConvNetJS - JavaScript中的深度學習。在您的瀏覽器中訓練卷積神經網絡(或普通的)。DN2A - 數字神經網絡架構。Synaptic.js - node.js和瀏覽器的免架構神經網絡庫。TensorFlow.js - 用於在瀏覽器和Node.js上訓練和部署ML模型的JavaScript庫。ml5.js - 友好的網絡機器學習。
  • 對接插畫師與品牌方做創意整合,「Slow Movement」想做專業的插畫經紀公司 | 早起看早期
    36氪近期接觸的 Slow Movement 工作室,成立於2018年,公司位於上海,由李雨溪和胡弘毅聯合創立,是一個為插畫師提供代理與服務的經紀機構,旨在為對接插畫師與品牌方做創意整合,實現插畫在更多場景的應用。李雨溪告訴36氪,她和合伙人曾在倫敦藝術大學學習視覺媒體與插畫專業,很喜歡插畫的新鮮活力和延展的無限可能性。
  • 網際網路系統架構為什麼要做前後端分離呢?
    在現在的網際網路架構中,前後端分離已經是一個非常常見的系統架構方式了,但是我們將前後端分離以後,感覺項目的架構比傳統的分層架構更複雜了,需要的人力資源也更多了,甚至項目周期也變得更長了,既然看上去好處不大,為什麼還要做前後端分離呢?
  • 蘋果公司的組織架構是怎樣的
    正如錢德勒(Chandler)的名言,「結構遵循戰略」——儘管蘋果沒有採用他預期的大型跨國公司會採用的結構。現在讓我們來看看蘋果公司架構背後的領導模式。2、沉浸在細節中貫穿蘋果公司的一個原則是「領導者應該知道他們組織的三個層次的細節」,因為這對於在最高層迅速有效的跨職能決策至關重要。如果經理出席決策會議時沒有掌握細節,則必須在沒有細節的情況下做出決策,或者推遲決策。經理們會講一些戰爭故事,告訴那些深入研究電子表格、代碼行或產品測試結果的高級領導。
  • ...重量級嘉賓及大會日程,4天解讀100個年度值得學習的研發案例實踐
    餓了麼中間件團隊首席架構師、異地多活項目總架構師 李雙濤13:30-14:30 《滬江從容器化向Serverless的演進》滬江資深Java架構師 黃凱14:30-15:30 《百度實時搜索技術的架構演變》百度網頁搜索部架構師鄭然15:30-16:30 《天下武功唯快不破-微服務實踐快速響應瞬息萬變的市場》
  • 2020前端我們都做了什麼?
    框架將淡化出大家的視野,成為一種默認的設計模式,IDE將成為未來前端開發,第一門檻,成為整合現有框架,提供代碼模板,智能提示,推薦算法的最佳集成化解決方案。我們做的不是前端,我們做的是供應鏈而我們,需要保持的不是針對於具體現有技術的學習,而是提高自己的持續關注度,和技術篩選的視野。「站在巨人的肩膀上,你才看的更遠」。
  • 切入汽車金融領域,「符號律動」想幫客戶解決風控難題
    當前,國內主流的業務安全產品一般基於大數據技術和深度學習,切入風控場景,目前主要服務於網際網路、 金融領域。 36氪日前接觸到的一家初創公司——「符號律動」,成立於2018年,定位於專注提供智能分析與風控服務的科技公司,目前主打汽車金融市場,主要幫助汽車金融客戶進行授信,為網約車公司提供司機背調等服務。
  • 騰訊工業雲首席架構師餘弦:做好數位化助手,布局數字經濟新基建
    4月28日,在由每日經濟新聞主辦的「聚焦新基建——中國工業網際網路的啟蒙年代」在線沙龍上,騰訊工業雲首席架構師餘弦表示:「繼發起2億元戰疫開發者公益聯盟、15億元戰疫基金後,騰訊雲還推出了針對中小企業戰疫幫扶計劃,免費為超過10萬家中小企業提供雲資源和協同辦公產品。」網際網路巨頭騰訊希望在工業網際網路層面扮演「數位化助手」的角色。