AD:美團成都研發中心正在招聘大量 Web 前端、iOS、Android、Java 後端、QA,技術牛、待遇好、發展前景大、生活溫馨,有意者請郵件 gwuhaolin@icloud.comcss
愛折騰的前端圈時常會有新輪子誕生,只要是好東西就能快速得到大量關注,資歷再好的大哥只要不如新人也很快會被替代。html
橫空出世的Parcel近日成爲了前端圈的又一大熱點,在短短几周內就得到了13K的Star。 做爲前端構建工具新人的Parcel爲何能在短時間內得到這麼多贊同?他和老大哥Webpack比起來到底有什麼優點呢?前端
我花了6個月的時間寫了一本全面介紹Webpack的圖書《深刻淺出 Webpack》近日剛出版,感受被新出的Parcel給腰斬了。 但本文將本着公平公正的心態來詳細對比一下他兩,讓你能明白他們直接的異同和優缺點對比,好決定是選Parcel仍是Webpack。node
爲了對比他兩,咱們從實際出發舉一個實戰項目爲例子,分別用Parcel和Webpack去實現,實戰項目要求以下:webpack
在用了好久Webpack後用Parcel的感受就像用了好久Android機後用iPhone,不用再去操心細節和配置,大多數時候Parcel剛剛夠用並且用的很舒服。git
用Parcel去完成以上項目的要求,我只是專心去寫項目頁面所必須的代碼,Parcel智能快速的幫我構建出了能正常運行的結果。github
如下是Parcel讓我心動的點:web
而反觀Webpack,比Parcel要麻煩不少:json
這個項目我用Parcel時花在構建配置上的時間不到一分鐘,而用Webpack構建時花了5分鐘去配置。後端
經過以上項目實踐,發現Parcel目前有以下明顯的缺點:
零配置實際上是把各類常見的場景作爲默認值來實現的,這雖然能節省不少工做量,快速上手,但這同時會帶來一些問題:
.babelrc
postcss.config.js
tsconfig.json
這些配置文件也一塊兒發佈上去了, 因爲目前Parcel只要在目錄中發現這些配置文件就會認爲該項目中的代碼須要被處理。例如mini-store這個庫中就把.babelrc
文件發佈到了Npm上,項目依賴的原本是lib中已經編譯成了ES5的JS代碼了,但Parcel還會去用Babel處理一遍。 Npm官方並無規定發佈到Npm上的包須要符合哪些規範,這會讓Parcel很爲難。目前Parcel只能用來構建用於運行在瀏覽器中的網頁,這也是他的出發點和專一點。 在軟件行業不可能存在即便用簡單又能夠適應各類場景的方案,就算所謂的人工智能也許能解決這個問題,但人工智能不能保證100%的正確性。
反觀Webpack除了用於構建網頁,還能夠作:
分別去用Parcel和Webpack構建以上項目,收集的數據以下:
數據項 | Parcel | Webpack |
---|---|---|
生成環境構建時間 | 8.310s | 9.58s |
開發環境啓動時間 | 5.42s | 8.06s |
監聽變化構建時間 | 3.17s | 2.87s |
生成環境輸出JS文件大小 | 544K | 274K |
生成環境輸出CSS文件大小 | 23K | 23K |
從以上數據能夠看出:Parcel構建速度快,但Parcel輸出文件大
致使Parcel構建速度快的緣由和iOS比Android用起來更流暢的緣由相似:
致使Parcel輸出JS文件大的緣由在於:
現階段的Parcel就像beta版的iPhone,看上去很美好但還不能用於生成環境,若是你如今就把Parcel用於生成環境,相信我你必定會踩不少坑。 踩坑沒關係,要命的是沒法在網上找到解決方法以快速解決問題。
我不是不鼓勵你們使用Parcel,歷史總須要先驅去推進,就像喬布斯義無反顧的引領了一個時代,咱們也須要去實踐Parcel,坑都是一個個填平的,因此我鼓勵你們在一些我的小項目中使用Parcel。
若是Parcel能解決上面提到的這些問題,我會堅決果斷的在個人下一個項目中使用他。