為什麼前端開發這麼不穩定?
我們都有這樣的經歷:當學習了一種前端技術的時候,同時會有幾種新的前端技術誕生。 還有,你選擇的那種前端技術,也許已經過時了。
然而我們似乎也從來沒有關注為什麼會這樣。
典型的解釋似乎是 web 開發者天生不耐煩,永遠追求最前沿的技術,趕時髦。總的來說:前端技術更迭如此之快是整個開發者社群的不明智(而你的不明智行為完全取決於你無法控制的因素)。
不管真實原因是否是這樣,前端開發確實存在這樣的問題。
前端開發有多不穩定?
在探討原因之前,有必要驗證這個問題是否真實。 前端技術是否真的變化如此之快?
考慮一下 Github 上星號最多的 JavaScript 前端技術列表:
最短的 2.5 年也不是那麼久 - 不到傳統桌面系統迭代週期的一半,這足以說明問題。 那麼是什麼原因導致了這種快速的,甚至是不可持續的變化?
React
造成這個問題的原因可能是 React。 作為一款功能強大的工具,它需要大量的輔助模組和支援庫,而這正是問題出現的地方。React 社群是一個很大的微型庫架構組織,其中應用程式由許多獨立的單一功能 JavaScript 庫組成,該架構是為了致敬 Unix 哲學。
這種架構的優勢在於,隨著新的實踐的出現,可以輕鬆地進行調整,這對快速創新(如過去幾年一樣)是有意義的。 缺點是增加了變化的影響範圍,並且需要大量的審查。
這就是我的核心觀點:JavaScript 的問題不在於語言,網路或其他任何特定技術,而是選擇的架構無法讓開發者跟上變化趨勢。
NPM 問題
現代 JavaScript 最大的資產是 NPM。它提供了大量的模組,可以滿足任何人的特定需求,但是很難過濾和決策。哪些庫真的被支援?哪些庫的功能是正確的?哪些不是有惡意的庫? JavaScript 開發人員真正作為唯一的參考標準就是流行度 - 下載數量和 star 數量 - 這加速了庫的傳播。
當然,還有其他驗證庫的方法:可以通過 Github 問題閱讀並搜尋 StackOverflow。你可以做一些測試,甚至自己檢查原始碼。但是這需要很多時間。
這是 JavaScript 開發人員的弱點。作為一名面試官,我經常會問面試者是如何選擇技術,但回答往往讓我失望,因為知名度幾乎總是他們選擇某個庫的唯一標準。軟體工程至少部分是研究工作,我們需要培養初級程式設計師的研究能力。但即使這樣做了,這些可能性仍然會出現在他們身上。
設想成為一名初級開發人員
把自己設想為一個初級到中級的 JavaScript 開發者,首次編寫一個新的應用程式。
從完全空白,這讓事情變得簡單。你很佛系,所以從選擇一個簡單的框架開始。聽起來不錯(這也是你的唯一選擇)。
作為準系統它沒有什麼作用,所以選擇輔助庫的任務落在你肩上。如果你在做前端工作,它可能是 Redux 的表單和 API 請求的庫。如果是後端,它可能是 Express 的中介軟體。
然後你開始搜尋,搜尋結果中的一篇來自 Medium(譯註:部落格網站) 的部落格推薦 X.js。該部落格的作者是 X,但她從未表明這種特殊的利益衝突。Medium 上所有的部落格都一樣,所以永遠不能用知名度來作為我們的參考標準。
你錯過了指出了 X.js 中的一些重要不足之處的答覆,因為 Medium 在有意忽略。然後繼續搜尋,發現了 Y.js.
這次你在 Twitter 上找到一個連結 - 超過一百個點贊!這應該值得信賴了吧,畢竟這麼多人為自己"把關"了。你在感謝中點了個贊,然後跳轉到了 Github 的連結。
但不是那麼快。這個連結太老了 - 該庫現已棄用。你可以看出,DEPRECATED 這個詞無處不在,十分醒目。
Y.js 是“物件導向”的。你認為這是一件好事,隱約回想起 ComSci 第一年關於 Smalltalk 和訊息傳遞的一些東西。但顯然這是非常糟糕的。
另一篇 Medium 上的部落格試圖解釋為什麼,雖然推理有些模糊,並且用你不認識的密集術語來包裝。後來事實證明,這個術語是由該部落格的作者發明的,文中權威的參考連結也來自他自己的部落格。
更糟糕的是,該帖稱,即使在 JavaScript 面試中提到 OOP 也會使你完全失業!你現在已經迷失方向了。值得慶幸的是 - 有他的 $ 50 美元的 JavaScript web 開發課程。你很慶幸找到這麼好的資源,記下了連結,並點了贊。
所以,你將轉向 Z.js,這個庫有更多的 star,文件似乎不太有用。 儘管列出了很多方法,但如何實際使用? 至少看到它使用了一種叫做“標準 JS”的東西,你認為它與 ECMA 標準委員會有關? 其實並沒有。
但怎樣才能避免這些坑呢? 誰來幫助你避免採坑? 高階開發人員也正在學習。 我們都捲入了追求最新技術,追趕潮流的旋渦中,只是為了保持最新並保持就業。
所以,你採取了看似最可靠的標準:Github 專案 star 最多。 這就是為什麼 JavaScript 開發受到隨波逐流的影響。
應該怎麼做?
像大多數抱怨者一樣,我只想表達不滿,而不是解決它們。 但我有一些想法:
警惕 Medium
Medium 上有點難以區分權威內容。以前部落格允許優秀的作者建立自己的視覺主題,幫助訪問者識別之前幫助過他們的來源。
警惕自我推銷
在過去的幾年裡,JavaScript 世界出現了激進的自我營銷,這可能是因為付費線上培訓材料的興起以及作為 Github名人的就業、諮詢優勢。
我對好的內容沒有任何問題,但也出現了很多不誠實的手段:自我引用 ,發明專有術語(例如'Standard.js')
考慮非微型庫架構
嘗試能提供大面積的功能,並且不需要很多外掛來提高生產力的框架來開始你的專案 - 這將立即減少變化的影響範圍。 這是我對 Vue.js 非常感興趣的原因之一。 您也可以將 React 用作入門工具包或較大框架的一部分,如 Next。
不要過分滿足無理需求
唯一需要知道整個公司技術棧細節的是自由身承包商,他們獲得了可觀的工資來完成專案。 否則,大多數僱主不需要你瞭解最新 React 的細節。 所以,避免學習所有東西的要求:大部分都是沒用的。
小編學習
最近有很多想學習前端開發,他們問我有沒有什麼好的web前端學習資料,我本是一名前端程式設計師,對於web前端,網頁製作這方面的資料我肯定是有的啦!
web前端資料學習群:618522268
為了感謝大家的支援,今天我在這裡統一說下吧,關注公眾號:‘web前端EDU',就可以領取上全套視訊學習資料!
相關文章
- [譯]為何前端開發如此不穩定前端
- [譯] 為何前端開發如此不穩定前端
- 什麼是前端開發?為什麼要學前端開發?前端
- 為什麼前端這麼多人前端
- 為什麼這麼多人覺得前端開發很難做下去?前端
- ippswap是什麼?為什麼這麼火?ippswap模式玩法系統開發定製部署模式
- 區塊鏈為什麼需要穩定幣?區塊鏈
- 為什麼不做開發做運維?Linux為什麼這麼廣泛?運維Linux
- erp體系不穩定的原因是什麼?
- python為什麼不適合web開發PythonWeb
- 前端為什麼需要模組化開發前端
- 怎麼測試伺服器穩不穩定伺服器
- 區塊鏈遊戲開發為什麼這麼火爆?區塊鏈遊戲開發
- 現代前端工程為什麼越來越離不開 Monorepo?前端Mono
- "開源"是什麼?為啥這麼火?一定免費嗎?
- 這就是為什麼你學不會DDD
- 做了這麼多年前端,為什麼你還是不會寫業務程式碼?前端
- 我的遊戲這麼好玩,為什麼賣不動?遊戲
- 什麼是AI穩定擴散?AI
- 為什麼華為研發這麼看重FMEA分析?
- 360行,行行轉前端:前端崗為什麼這麼火?這套教程限時領前端
- Passport 設定token 過期時間盡然不生效!這是為什麼?Passport
- 路由器不穩定總是間歇性斷網什麼原因怎麼辦路由器
- 網站為什麼會打不開網站
- 為什麼我不贊成開發來寫檢視
- 什麼是字串,web前端開發裡起到什麼作用字串Web前端
- 這個一鍵分發平臺,為什麼這麼好用?
- 為什麼 Python 這麼慢?Python
- 為什麼Python這麼慢?Python
- 為什麼Julia這麼快?
- Redis為什麼這麼快?Redis
- Nginx 為什麼這麼快?Nginx
- win10設定為什麼打不開 win10設定開啟的方法Win10
- 裁員20%、用穩定幣發工資……這家加密交易所究竟發生了什麼?加密
- 企業應用程式為什麼要定製開發
- python有什麼特性?為什麼這麼火?Python
- Python是什麼?為什麼這麼搶手?Python
- 測試開發都這麼厲害了?為啥不直接轉業務開發?