為什么前端技術棧如此復雜?

來源: 投稿
作者: 卡卡西xi
2023-10-17 17:11:00

前端生態系統的復雜性是出了名的。在每一層,似乎都存在著不兼容的,相互競爭的標準。

沒有通用的導入系統。ES模塊、CommonJS、異步模塊定義(AMD)和通用模塊定義(UMD)都是你可以導入或分享代碼的不同方式。打包器試圖通過支持多種方法來解決這個問題。但是代碼經歷了多層的壓縮、混淆和轉譯。TypeScript被編譯成JavaScript。網絡上的代碼會被壓縮(以減少網絡帶寬)或混淆(以防止復制)。源映射可以解決其中一些問題,但這又是另一項需要配置的事情。獲取正確的堆棧跟蹤可能會很棘手。這需要語言、工具和運行時之間的協調。

極其不同的環境。一個特性和一個錯誤。前端代碼預期在任何地方運行 - 不僅僅是瀏覽器。在不同環境中可用的上下文和API各不相同,很難知道你有哪些可用的上下文(更不用說知道你正在導入的庫假設了什么)。這段代碼能在服務器上運行嗎?這段代碼能在客戶端上運行嗎?這對開發者來說很困難(我可以使用什么代碼)對于庫維護者來說也很困難(我應該為哪些環境優化我的代碼?)。

過度強調文件結構。太多的前端工具依賴于項目結構來進行行為設定。配置必須在項目的根目錄中(導致了一長串的tailwind.config.js、postcss.config.js、eslint.config.js、next.config.js等)。文件結構對于導入代碼是必要的惡,但在前端中,它卻做了更多的事情。它可能是一個API,用于將特定文件路由為網頁,或者作為API,或者作為靜態網頁,或者作為動態重新生成的網頁。這些都很方便,但有時候很難調試,也很難發現代碼庫的部分內容。

配置地獄。開箱即用的工具有很多。長期以來,我們有create-react-app,這是一個被贊譽的工具包,它集成了許多這樣的工具,從一開始就為開發者提供了一個可用的配置。但是,如果你偏離了這條黃金路徑,你就會被20多個開發工具和復雜的交互所困擾。幾乎每個工具都在與其他工具爭斗。ESLint(代碼檢查工具)和Prettier(代碼格式化工具)經常發生沖突。

開發失衡。在代碼和部署之間有如此多的步驟,意味著熱重載開發往往復雜。這導致了像webpack-dev-server這樣的工具的出現,它為你處理了大部分問題。但是要警惕魔法。這些開發服務器中有太多的假設,它們可能會迅速偏離生產行為。

原文:https://matt-rickard.com/why-is-the-frontend-stack-so-complicated

作者:Matt Rickard

展開閱讀全文
點擊加入討論??(26) 發布并加入討論??
本篇精彩評論
我認為前端搞這么復雜純粹就是為了加工資
2023-10-19 10:55
13
舉報
個人還是看好 jquery 和 vue 其它的的確很離譜,大部分場景下 jquery 足夠了
2023-10-22 21:04
2
舉報
2023年都不需要考慮瀏覽器兼容了,vanilla就夠用。這時還用jquery就是多此一舉。
2023-10-29 01:43
1
舉報
打工人就是喜歡這些復雜的技術,自從用上了這些復雜的技術老板覺得我老NB了,不管什么項目后端一律上微服務,開口就是業務中臺,前端不管項目大寫,一律react,各種插件搞一堆,不要質疑我,這是和國際接軌
2023-10-20 09:14
1
舉報
未來web應該兩條路,一個是傳統的原生JS+HTML+CSS,另一個是wasm。前者應該大道至簡偏向靜態站點,后者走規?;能浖こ?,重交互和計算。
2023-10-19 14:32
1
舉報
26 評論
6 收藏
分享
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间