<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          React 毀了 Web 開發(fā)!

          共 2323字,需瀏覽 5分鐘

           ·

          2021-07-13 18:49



          作者 | Ivan Lu?in
          譯者 | 彎月      責編 | 歐陽姝黎
          出品 | CSDN(ID:CSDNnews)


          以下為譯文:

          React 是一個很好的庫,對于Web開發(fā)很重要,因為它引入了聲明式與反應(yīng)式模板,這在當時是每個人都需要的范式轉(zhuǎn)變。當時(也就是6~7年前),我們面臨著需要的范式轉(zhuǎn)變的問題,而React 很好地解決了這個問題。

          另外提一句,在React之前,Ember也解決了同樣的問題。然而,它的性能并不那么好,而且該框架規(guī)定了太多東西,遠不如React。

          然而,React在開始流行之后,發(fā)展變得一團糟。React社區(qū)中開啟了一種新趨勢,一切都圍繞著炒作、新奇和創(chuàng)造新范式的轉(zhuǎn)變。每隔幾個月就會涌現(xiàn)一些新的庫,為我們應(yīng)該如何編寫 React Web 應(yīng)用程序設(shè)定新標準,同時還會解決大部分已經(jīng)解決的問題。

          下面,我們以“狀態(tài)管理”為例來說明。由于 React 缺少傳統(tǒng)的依賴注入系統(tǒng)(DI 是通過組件組合實現(xiàn)的),所以社區(qū)不得不自己解決這個問題。然而,后來就變成了一遍又一遍地解決這個問題,每年都會帶來一套新的標準。

          React 只是一個渲染引擎,在常見的Web應(yīng)用程序中,你需要使用很多庫來構(gòu)建項目的框架,例如數(shù)據(jù)層、狀態(tài)管理、路由、資產(chǎn)捆綁器等。

          React 背后的生態(tài)系統(tǒng)給了你太多這樣的選擇,而這個技術(shù)棧也因此而變得支離破碎,并引發(fā)了著名的“Javascript 疲勞”。

          此外,還涌現(xiàn)了一種趨勢:“框架比較熱潮”。各個JS框架之間經(jīng)常會展開渲染速度以及內(nèi)存占用等屬性的比較。其實,這些因素在大多數(shù)情況下根本無關(guān)緊要,因為應(yīng)用的速度緩慢并不是由于JS框架的速度過慢而引起的,而是因為糟糕的代碼。

          然而,就像世界上所有的趨勢一樣,這個趨勢有點過,甚至危及了新一代的 Web 開發(fā)人員。我就在想,為什么一個庫能成為Web開發(fā)人員簡歷中最耀眼的技術(shù)?更糟糕的是,它甚至算不上一個庫,只不過是庫中的一個模塊。人們常常將 React hook視為一項“技術(shù)”,甚至可以與代碼重構(gòu)或代碼審查等實際技術(shù)相提并論。

          認真地說,我們什么時候才能停止吹捧這種技術(shù)?

          比如說,你為什么不告訴我,你知道:

          如何編寫簡單易讀的代碼

          不要向我炫耀你掌握了某個GitHub上獲得星星數(shù)最多的庫;而是給我展示一兩個優(yōu)秀的代碼片段。

          如何管理狀態(tài)

          不要討論某個流行的狀態(tài)管理庫,而是告訴我為什么“數(shù)據(jù)應(yīng)該下降而動作應(yīng)該上升”。或者說,為什么應(yīng)該在創(chuàng)建的地方修改狀態(tài),而不是組件層次結(jié)構(gòu)中更深的地方。

          如何測試代碼

          不要告訴我你知道 Jest 或 QUnit,而是解釋一下為什么很難自動化端到端的測試,以及為什么最低程度的渲染測試只需付出10%的努力,卻能帶來90%的好處。

          如何發(fā)布代碼

          不要告訴我你使用 CI/CD(因為如今每個項目里的成員都不止一個人),而是解釋為什么部署和發(fā)布應(yīng)該分離,這樣新功能就不會影響到已有功能,而且還可以遠程啟動新功能。

          如何編寫可審查的代碼

          不要說你是一名“團隊成員”,而是告訴我代碼審查對審查者來說同樣困難,而且你知道如何優(yōu)化PR才能提高可讀性和清晰度。

          如何建立穩(wěn)固的項目標準

          除非團隊中只有你一個人,否則你就必須遵守項目中的標準和慣例。你應(yīng)該告訴我命名很難,而且變量的范圍越廣,投入到命名中的時間就應(yīng)該越多。

          如何審核別人的代碼

          因為代碼審查可確保產(chǎn)品質(zhì)量、減少bug和技術(shù)債務(wù)、共同建立團隊知識等等,但前提是將代碼審核貫徹到底。代碼審查不應(yīng)該只是自上而下的活動。對于經(jīng)驗不足的團隊成員來說,這是一個很好的學習機制。

          如何在JS框架中找到自己的方式

          這與GitHub上的星星數(shù)量無關(guān),你應(yīng)該學習如今大多數(shù) JS 框架都擁有的共同原則。了解其他框架的優(yōu)缺點可以讓你更好地了解自己選擇的框架。

          如何建立最小化可行產(chǎn)品

          技術(shù)只是制造產(chǎn)品的工具,而不是流程。與其將時間浪費在技術(shù)爭論上,還不如花點時間優(yōu)化流程。

          如何優(yōu)化:不要太早,也不要太晚

          因為在大多數(shù)情況下根本不需要優(yōu)化。

          如何結(jié)對編程

          因為結(jié)對編程與代碼審查一樣,這是最重要的共享知識和建立團隊凝聚力的實踐。而且也很有意思!

          如何持續(xù)重構(gòu)

          因為每個項目都有技術(shù)債務(wù),你應(yīng)該停止抱怨,并開始重構(gòu)。每次開發(fā)新功能之前都應(yīng)該進行小型代碼重構(gòu)。大規(guī)模的重構(gòu)和重寫永遠不會有好結(jié)果。

          以上就是我認為 React 毀了 Web 開發(fā)的原因。很多人對這一說法很感興趣,并熱切地加入了辯論。如果你認為React 并沒有那么糟糕,請在下方留言。

          原文鏈接:https://medium.com/building-productive/react-ruined-web-development-dd65342a833f

          聲明:本文由CSDN翻譯,轉(zhuǎn)載請注明來源。


          —————END—————

          推薦閱讀:

          JS語法 ES6、ES7、ES8、ES9、ES10、ES11、ES12新特性
          寫了這些騷代碼,上班差點被同事揍了
          Vue 開發(fā)必須知道的 36 個技巧
          VSCode 花式玩法(摸魚)了解一下
          前端業(yè)務(wù)組件庫怎么樣做到極致?
          前端骨架屏自動生成方案


          最近面試BAT,整理一份面試資料前端面試BAT通關(guān)手冊,覆蓋了前端技術(shù)、CSS、JavaScript、框架、 數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
          獲取方式:關(guān)注公眾號并回復 前端 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
          明天見(??ω??)??
          瀏覽 97
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  台湾成人在线视频 | 黄色一类片 | 91中文成人 | 欧美性爱免费在线视频PK视频 | 在线免费看黄视频 |