[譯] 為何前端開發如此不穩定,前端開發不穩定

我們都知道這樣一個笑話:在你學會一項前端技術的時候,另外三項新技術已經發布了。愛掏網 - it200.com不僅如此,你剛學會的那個也已經被棄用了。愛掏網 - it200.com

我們卻不常看到有解釋為什么會這樣。愛掏網 - it200.com

典型的解釋(來源于 reddit 的 r/programming 頻道)這似乎與前端開發者天生不耐煩,追逐流行與能力有限相關,這種解釋構成了一個更普遍的謬論:假設你所不理解的行為是由整個群體的愚蠢,糟糕或貪婪造成的 (而你自己的不明智行為完全是由你無法控制的因素造成的)。愛掏網 - it200.com

無論它是不是謬論,我們確實有這個問題,對嗎?

量化問題

在跑偏之前,我們有必要確定這個問題是否真的有現實依據。愛掏網 - it200.com前端技術真的變化很快嗎?

從主流受關注(也可能不是)的技術來看,細想一下這個 Github 上“高星” JavaScript 前端技術排行:

+------------------------------------------------------------+
| 庫 | Star 數 | 發布時間 | 年齡 |
|------------------------------------------------------------+
| React | 96986 | 2024 年 3 月 | 3 年 |
| Vue | 95727 | 2024 年 10 月 | 2.5 年 |
| Angular (1) | 58531 | 2010 年 10 月 | 7.5 年 |
| jQuery | 49061 | 2006 年 8 月 | 11 年 |
| Angular (2+) | 36665 | 2024 年 12 月 | 2.5 年 |
| Backbone | 27194 | 2010 年 10 月 | 7.5 年 |
| Polymer | 19668 | 2024 年 5 月 | 3 年 |
| Ember | 19003 | 2011 年 12 月 | 6.5 年 |
| Aurelia | 10506 | 2024 年 6 月 | 2 年 |
| Knockout | 8894 | 2010 年 7 月 | 8 年 |
+------------------------------------------------------------+
復制代碼

最年輕的項目已經兩歲半了,雖然并不是那么老,例如,它都不到你的桌面操作系統維護周期的一半長,但是也不是像那個笑話說的那樣。愛掏網 - it200.com所以是什么導致人們對前端有了這種更迭快速、甚至不可持續變化的感覺呢?

React 與它的朋友們

可能是 React 造成的。愛掏網 - it200.com作為一個強力工具,它需要一系列的輔助模塊和支持庫來支撐,這就是問題所在。愛掏網 - it200.comReact 生態中我稱之為“微型庫(microlib)架構”的內容非常龐大,其應用是由無數離散的,單一用途的 JavaScript 庫組成,以對 Unix 哲學 致敬。愛掏網 - it200.com

這一架構的優點是,當新的實踐出現,你可以快速適應,這在像幾年前那種快速革新階段非常有用。愛掏網 - it200.com缺點在于它使你需要經常進行大型迭代,同時也要求你在眾多(往往太多)所謂的微型庫(microlib)中審查挑選。愛掏網 - it200.com

這也是我論點的主旨:問題不在于 JavaScript 語言本身 [1],Web 或是任何特定的技術,而是糟糕的“做選擇式架構”使得開發者不得不追逐流行趨勢。愛掏網 - it200.com

NPM 問題

NPM 是現代 JavaScript 的最大資產,也是最大負債。愛掏網 - it200.com它提供了豐富的模塊,幾乎可以滿足任意特定需求,但很難對于這些模塊進行過濾和管理。愛掏網 - it200.com哪些模塊是真正得到支持的?哪些模塊真的有正確的功能?哪些模塊不只是惡意軟件的載體?JavaScript 開發者真正使用的選擇方法是受歡迎程度——下載次數與 Github 上的 Star 數量,這無疑加劇了追逐流行的風氣。愛掏網 - it200.com

當然還有其它方法去甄別一個庫:你可以瀏覽這個庫的 Github issue 列表,在 StackOverflow 上搜索問題。愛掏網 - it200.com你也可以做一些測試甚至自己檢查源代碼(在大多數情況下)。愛掏網 - it200.com但這些方法都耗費時間,在選擇類似日期解析模塊這種小玩意兒時,沒有必要做這些耗費時間的事。愛掏網 - it200.com

我承認這是 JavaScript 開發者的一個文化缺陷。愛掏網 - it200.com作為面試官,我經常問面試者是如何進行技術選型的,答案令人沮喪,受歡迎程度總是他們唯一知道的指標。愛掏網 - it200.com軟件工程至少在一定程度上是一項研究工作,我們需要培訓初級工程師這些研究技能,但是即使我們做了培訓,工程師們也未必能做出正確的選擇。愛掏網 - it200.com

想象自己是一名初級工程師

站在初級、中級 JavaScript 開發人員的角度,第一次編寫新的應用程序。愛掏網 - it200.com

起初你很天真。愛掏網 - it200.com你的項目非常干凈并希望讓事情一直簡單,你是一個虔誠的 Agilist(敏捷開發倡導者)而且 YAGNI(You aren't gonna need it,意為 “你不需要它”)是你的口號。愛掏網 - it200.com因此你從一個“簡單的框架”入手。愛掏網 - it200.com這感覺挺好,對吧?(即使感覺并不好,這也經常是你唯一的選擇)。愛掏網 - it200.com

作為一個基本框架它能做的事很少,因此擔子落在你的肩上,需要選擇一些輔助庫。愛掏網 - it200.com如果你負責前端工作,可能是 Redux 的用于表單和 API 請求的輔助庫。愛掏網 - it200.com如果是后端,則可能是 Express 中間件[2]。愛掏網 - it200.com

如果你用 Google 搜索一下,會發現一個強烈推薦 X.js 的 Medium 文章。愛掏網 - it200.com后來發現這篇文章就是 X.js 的作者寫的,盡管她從未聲明過利益沖突(但是她提供了一個 GitTip 的 jar 包)。愛掏網 - it200.com并不是說所有的 Medium 文章看起來都一樣,因此你不能依賴某個“品牌”來識別有信譽的資料。愛掏網 - it200.com

你錯過了一些指出 X.js 致命缺陷的評論,因為 Medium 有意壓下了這些評論,然后你去繼續尋找一個 Y愛掏網 - it200.com

這次你在 Twitter 上找到了一個有一百多個紅心的鏈接!你猜這是個好信號,因為 Twitter 是一個比你懂得更多的社區“策劃”的。愛掏網 - it200.com你在感激之情中也點了紅心(像之前那一百多個人一樣)然后按照鏈接到了 Github。愛掏網 - it200.com

事情進展的沒那么快。愛掏網 - it200.com那個鏈接過時了——這個庫已經被廢棄了。愛掏網 - it200.com你會發現這一點是因為頁面上到處都是 DEPRECATED 這個單詞,,就像史努比主題公園里的 CONDEMNED 標志(譯者注:史努比系列電影中的一個主題)。愛掏網 - it200.com

你發現 Y.js 是“面向對象”的。愛掏網 - it200.com你模糊記起計算機專業大一時學到的面向對象程序設計語言和通信的內容,覺得這是一個好東西。愛掏網 - it200.com但顯然這很糟糕。愛掏網 - it200.com

Medium 上的另一篇文章試圖解釋為什么,然而他的論證不僅含糊不清,還有一堆密密麻麻你不認識的術語。愛掏網 - it200.com后來你發現這些術語就是文章作者自己發明的,正如他所引用的看似中立的外部博客文章一樣,他引用了自己的論點。愛掏網 - it200.com

情況變得更糟了。愛掏網 - it200.com文章聲稱在 JavaScript 面試中提到 OOP(面向對象)也會導致你拿不到 offer!你現在已經完全懵逼了。愛掏網 - it200.com謝天謝地,手頭就有解決方案——文章作者的售價 50 刀的 JavaScript 開發課程。愛掏網 - it200.com你記下了課程鏈接,感覺三生有幸才能找到這個課程,為了表示感激又給了一個 clap(此文章的第一萬九千零一個 clap)(譯者注:clap 是 Medium 上類似于點贊的一個東西)。愛掏網 - it200.com

于是你繼續找到了 Github 上的高星項目 Z.js,雖然它的文檔看起來沒什么用。愛掏網 - it200.com文檔只是列出了一堆方法,實際該怎么使用 Z.js 呢?至少看到 Z.js 使用了叫 “Standard JS” 的東西,你覺得這與 ECMA 標準委員會有關,精神一振。愛掏網 - it200.com然而它們之間并沒有什么關系。愛掏網 - it200.com

作為一名初級工程師,怎么才能做得更好呢?誰可以引導你?高級工程師也同樣在邊學邊做。愛掏網 - it200.com我們也困在其中,只能疲于跟上潮流,維持工作。愛掏網 - it200.com

所以你放棄抵抗:選擇了 Gihub 上 Star 數最多,投票最多的項目。愛掏網 - it200.com這就是為什么 JavaScript 是由潮流和炒作驅動的愛掏網 - it200.com

應該做些什么?

和那些天生愛抱怨的人一樣,我更擅長抱怨問題,而不是解決問題。愛掏網 - it200.com但我有一些想法:

謹慎對待 Medium

Medium 鼓勵了一些標題黨,使得我們很難辨別權威內容。愛掏網 - it200.com傳統博客允許優秀作者創建獨特的博客主題,有助于讀者識別之前有過幫助的內容源。愛掏網 - it200.com

謹慎對待 “自我提升”

過去幾年里看到了 JavaScript 領域中更積極的自我推銷,這可能與在線付費內容的增加與作為 Github “網紅” 進行就業/咨詢的優勢有關。愛掏網 - it200.com對于那些為優秀內容付費并感到滿意的人來說這沒有任何問題,但是越來越多的人遇到了虛假策略:自我引證,發明專有術語(所以搜索引擎會將你帶回作者的文章)以及名稱冒用(如 “Standard.js”)。愛掏網 - it200.com

考慮無微型庫(non-microlib)架構

嘗試用提供豐富功能特性并且無需其它插件來提升效率的框架來啟動項目,這將立即減少模塊變動和意想不到的變更。愛掏網 - it200.com這也是我對 Vue.js 感興趣的原因之一。愛掏網 - it200.com你也可以像 Next 一樣使用 React 作為初學者工具箱或更大型框架的一部分。愛掏網 - it200.com

不要過分焦慮就業問題

唯一需要在報到當天就全盤了解公司內外技術棧的是外包人員,他們可以在公司外完成項目,獲得可觀的薪酬。愛掏網 - it200.com除此之外,大多數老板并不在意你不了解最新 React 輔助庫的來龍去脈。愛掏網 - it200.com因此,不必理會那些需要學習一切內容的呼吁,其中大多數都是噪音。愛掏網 - it200.com

注釋

[1] 這一想法有很多很多錯誤。愛掏網 - it200.com

[2] 你敢信 Express 需要一個中間件才能解析 JSON 格式的 POST 請求?抱歉,Express 就是這么為所欲為。愛掏網 - it200.com

如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改并 PR,也可獲得相應獎勵積分。愛掏網 - it200.com文章開頭的 本文永久鏈接 即為本文在 GitHub 上的 MarkDown 鏈接。愛掏網 - it200.com


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源為 掘金 上的英文分享文章。愛掏網 - it200.com內容覆蓋 Android、iOS、前端、后端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。愛掏網 - it200.com


作者:Colafornia
鏈接:https://juejin.im/post/5b1f2f1ae51d4506894983ae
來源:掘金
著作權歸作者所有。愛掏網 - it200.com商業轉載請聯系作者獲得授權,非商業轉載請注明出處。愛掏網 - it200.com
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 亚洲精品国产精品国自产网站| 精品久久久久久久久午夜福利| 欧美v在线观看| 国产精品无码免费播放| 亚洲欧美日韩综合久久久久| 99精品在线视频| 澡人人澡人澡人人澡天天| 天堂在线www资源在线下载| 你懂的在线播放| 99久久久国产精品免费蜜臀 | 欧美无人区码卡二三卡四卡| 国产麻豆精品精东影业av网站| 亚洲综合无码一区二区三区| 99热国内精品| 欧美日韩国产高清一区二区三区| 国产视频中文字幕| 亚洲国产精品久久人人爱| 俺去俺也在线www色官网| 最近中文AV字幕在线中文| 国产性生交xxxxx免费| 久久久噜噜噜久久熟女AA片| 被黑人猛躁10次高潮视频| 扒开双腿猛进入喷水免费视频| 同桌好舒服好粗好硬| 一个人免费观看日本www视频| 狠狠色噜噜狠狠狠狠98| 国产美女视频免费看网站| 亚洲国产欧洲综合997久久| 欧美浮力第一页| 日本丰满熟妇BBXBBXHD| 又粗又硬免费毛片| juy-432君岛美绪在线播放| 每日更新在线观看av| 国产爆乳无码视频在线观看3 | 国产一级做a爰片久久毛片| 中文字幕乱码人妻一区二区三区 | 久久91精品国产91久久麻豆 | 日韩中文字幕网| 又色又爽又黄的视频网站| a级毛片免费网站| 欧美国产日本高清不卡|