前端真的需要打包工具嗎?
最近使用webpack+jQuery+bootstrap+Vue+es6開發後台管理系統,真心覺得累,原因是總有解決不完的坑。
當初之所以用想用webpack是因為隨著系統應用的複雜,有些頁面實在是太多的功能聚在一起了。再加上是spa應用,首屏載入的資源特別的多。所以這經常出現白屏的情況。
其實我只想做到一下這些就可以了。
1、複雜頁面模塊化
2、瀏覽器緩存
3、合併css js
4、按需載入
上面的問題其實webpack都可以解決
但是有以下問題:
1、每次打包都要花費很多時間,加慢了開發進度
2、團隊能力不等造成很多問題維護成本
3、老版本框架不支持的問題
4、配置文件、查找bug、以及填不完坑問題
5、文件打包後出現的各種莫名問題
6、文件打包後體積問題
7、打包文件重複率問題
等等……
所以現在在想,所以瀏覽器引擎的優化我們真的需要webpack這些打包工具嗎?反正一個頁面載入幾十個js css文件也是沒有多大關係,唯一的缺點就是複雜頁面不好維護了。
是不是能力不夠?是不是能力不夠?是不是能力不夠?
能力不夠,對這些技術的拿捏和掌握不夠透徹,出了問題,就埋怨這些技術本身?
很多人還沒搞懂這些技術工具的主要目的和優缺點就盲目跟風地上了,你出了問題,解決不了或者解決地痛苦,當初你引進來的時候就沒有考慮到風險?
唉,圖樣圖森破
也順帶讓我聯想到某些人遇到某些問題就開始瞎猜並將其合理化的事,不了解和不想探究本質原因,對很多事情敷衍了事單純從部署性能的角度來看,打包是暫行方案。rollup 和 http2 普及之後,打包按道理不會是強需求。
但是現在前端項目的代碼組織已經走上了編輯代碼和最終運行文件完全兩樣的路,所以就算不打包,一整套工具鏈肯定是少不了的。
前端終極狀態,目前看來應該會和傳統軟體趨同,代碼用於編輯,二進位/位元組碼用於分發,符號文件用於調試。在這種狀態下,打不打包,如何打包就不是個技術問題,而純粹是個生態和管理問題了。
我猜未來 npm 上會出現大量非開源模塊,這種時候應用怎麼組織呢?這大概會是個新課題。其實怎麼弄都行,看自己需要了。題主的場景與其說打包工具增加複雜度,到不如說JQuery+Vue混搭增加複雜性。
打包工具如果使用三大框架,個人覺得是必須的,生產環境總不能在瀏覽器編譯吧?
JQuery+bootstrap的傳統項目隨意,不建議使用打包工具
PS,看到其他答案說到http2 。確實,如果http2普及打包工具確實就沒什麼必要了。
這樣思考的話 如果 瀏覽器對es6/7完全支持 babel也沒有必要(react的jsx和ng2的ts還是要編譯的)。長期來看隨著http2 es6/7 css屬性標準化(不再需要可惡的前綴)的普及 打包工具會越來越雞肋。但是在此之前打包工具還是有存在的意義的(讓我想起了當年兼容ie6/7/8的日子)
用不用,一看能力,二看場景。
有能力你就可以利用新技術帶來開發效率,用戶體驗的提升。能力不夠那還是老老實實做。看看你們的技術棧,Webpack+jQuery+Bootstrap+Vue+ES6,有點混搭有沒有?其實是兩個技術棧:
jQuery+Bootstrap+Gulp:比較基礎的前端技術棧,也是上一代的前端技術棧。對前端要求的能力適中,適合做一些後端渲染的網站開發;
Webpack+Vue+Vue 周邊:都用Vue了,為什麼還要用 jQuery 和 Bootstrap。可以拋掉 jQuery,然後採用 Element 或者 iView - 一套高質量的UI組件庫 這樣的前端框架。這是比較新的技術棧,對前端的要求能力其實也不高,但是要求有架構能力較強的中堅力量存在,才能駕馭好這些新技術。適合開發網頁應用,管理系統,體驗不錯的網站。
* + ES6:我們真的需要ES6嗎?加入 ES6,通常來講就意味著需要加入 Webpack 和 Babel,那麼多配置和插件,需要中堅力量去研究,並建立規範。新的語法或者語言最多算個甜頭,用得好可以提升效率和開發幸福感,用不好就是禍害。
多說一句,在目前的形式下,我認為前端對新技術盲從了,還沒學會走,就開始跑了。新技術棧正在替代老的技術棧,而且變得更難。每個前端團隊都需要打磨更好的工具,進行新的一輪全員培訓了!
好的項目推動講究思想先行,代碼後動。
作為webpack重度使用者,可以明確告訴你,題目裡面提到的問題都可以解決,而且方案不止一種。
講模塊化,webpack就是為模塊化而生的構建工具;論技術難度,聲明式的webpack配置文件難度不大吧;論編譯速度,你可以採用數組形式的配置文件,或者多個webpack實例,當然這塊確實需要開發者有比較好的webpack認識了。
論投入產出比,webpack比sea.js或者require.js高不止一個檔次。要是考慮到後期,構建工具的擴展或者ES語法升級,顯然用webpack是更合理的選擇。
最後,github上那麼多webpack boilerplate開箱即用,基本也不需要使用者做什麼配置工作。順便說一句技術選型問題,用了vue沒必要用jquery,把bootstrap替換為ivew或者element都可以把你的開發工作量成倍減少。類似webpack這樣打包工具的主要作用,是減少下載資源的HTTP請求數,同時還不用太操心那些文件要放到包里哪些不用。
上面提到的好處,主要體現在產品環境,在開發環境中,資源下載慢一點又何妨,只要開發體驗流暢就好。使用webpack的話,在開發模式下用Hot Module Reload,應該開發體驗也不錯。
應該說,只要場景不是太複雜,用webpack來做打包真的一點問題都沒有。
題主說到使用了jQuery和Vue,也許是歷史原因吧,但是我個人覺得都玩上Vue了就趕緊讓jQuery退休,實在不行兩者分開打包,不然遇到詭異事情真找不到合適的人問。
打不打包都看你本身的能力和項目的需要了。
很明顯,你說我就使用HTML+CSS+JS隨便實現一個什麼前端典型例子「輪播圖」…那你費這事幹什麼…直接寫啊!你&