Tobias Koppers:我當初為什麼寫webpack

z_paul發表於2021-09-09

Tobias Koppers是一位自由軟體開發者,家住德國紐倫堡。他因寫出webpack這個已有數百萬開發者使用的開源軟體而名噪一時。他目前專注於JavaScript和開源專案。以下是我對他個人的專訪,希望對大家有所啟發。

Gregor:你好,Tobias,JavaScript社群都在談論webpack,就連谷歌也已經把它整合到了自己的Angular CLI專案中了。很高興webpack誕生於紐倫堡,離我的老家英戈爾施塔特(德國)不遠。跟我們分享一下,你當時怎麼想起來寫webpack的,它怎麼那麼快就受到了大家歡迎的?

Tobias:你好,Gregor。實際上,谷歌也在參與webpack的開發,只不過是間接參與。我在迷上JavaScript以上,也寫過Java。谷歌曾經推出過一個工具,叫GWT(Google Web Toolkit),讓Java程式設計師能用Java編寫客戶端應用。GWT其實是一個Java應用到JavaScript SPA的編譯器,也使用了谷歌的一些應用。

GWT有一個功能我研究了很長時間,就是程式碼拆分(code splitting)。這個功能可以延遲載入不常用的程式碼。對於要保持初始載入速度的大型應用,這個功能非常重要。但我沒發現JavaScript的開源工具(2012年)中哪個具備這個功能,於是我就想寫一個這樣的工具,也就是webpack。

換句話說,webpack誕生之初主要想解決程式碼拆分的問題。而在我看來,這也是webpack今天這麼受歡迎的原因所在。隨著Web應用越寫越大,而移動裝置越來越普及(但上網環境相對不好),拆分程式碼的需求與日俱增。如果不拆分程式碼,就很難實現期望的效能。

Gregor:很多人拿webpack跟NPM指令碼、Grunt和Gulp等進行比較。有人也確實透過webpack實現那些工具的功能。我以後也會使用NPM指令碼和webpack。你對此怎麼看,你除了webpack之外,還會用其他任務工具嗎?

Tobias: NPM指令碼對我而言足矣。實際上,說webpack是Grunt/Gulp的替代器並不完全準確。Grunt和Gulp以及NPM指令碼都是任務執行程式。

Webpack是模組打包程式。這兩類程式的目標不一樣。但webpack簡化了 必須“過度使用”Grunt和Gulp和NPM指令碼才能實現的Web開發任務也是事實。NPM指令碼才是Grunt和Gulp的替代品。

不過,除了純粹的構建之外,任務執行程式也有存在的理由,比如部署、程式碼檢查、版本管理,等等。

Gregor:在我的JavaScript培訓課上,很多學員都說webpack上手有多難多難。有沒有也人跟說這麼說過?如果有,你有沒有想過怎麼改進?

Tobias: 有,確實有這樣的反饋。不過,也有不少使用者在會用以後還這麼說。而實際上webpack使用起來很簡單。只要會寫網頁,都會覺得它比之前的工具容易使用。

我認為這些反饋主要是因為webpack的概念與其他工具的概念明顯不一樣,特別是在把Grunt/Gulp遷移到webpack時。任務執行程式的配置是指令式的,描述的是每一步要執行什麼任務。而Webpack的配置則是宣告式的,就是說不會描述webpack要執行的步驟,而只描述執行這些步驟的方式或執行後的結果是什麼樣的。

Gregor: 你的開發日程是怎麼安排的?下一個webpack的版本計劃有什麼功能?

Tobias: 現在還說不太好。很多事情都有可能,撿幾個重要的說一下吧:

  • 作用域提升:連線模組的小卻強大的方式

  • WebAssembly:支援Web應用中的二進位制程式碼

  • 持久快取:更快的初段編譯

  • CSS(還有HTML)作為一類公民:對樣式表(和HTML)的更多支援

  • 其他

使用者和贊助者決定實現這些功能的優先順序。我建了一個投票頁面,大家可以去投。所有人都可以表達自己的想法,但贊助者和志願者的權重更大。因為他們需要一定的回報。使用者當然希望多多益善。

Gregor:能否推薦幾個webpack最佳實踐?

Tobias: 使用按需載入。非常簡單,效果非常好。

Gregor:你個人有什麼目標嗎?我們會不會很快在媒體上看到,說你去谷歌去山景城了?

Tobias: 我不這樣想。我很快會成為一個自由職業者。我會把更多的時間放到開源上來,透過捐助實現財務平衡。因為捐贈通常不夠,我會接一些工作或諮詢來彌補缺口。我很想知道這樣行不行。也許有人會成為我的贊助商,提供額外幾個星期的贊助(聽見了嗎,谷歌)。

維護一個開源專案需要付出的努力超出常人想象。現在,程式碼評審和解決issuse佔了我80%時間。我既沒足夠的時間寫程式碼,也沒時間重構。甚至一些合併請求我都得拖上一段時間才能處理。我需要花時間仔細看一看。當然,志願者並不想如此。我想這種情況會變的,只要我全職寫webpack就行了。但願我能有更多時間寫更多程式碼。

Gregor:非常感謝你接受採訪!也感謝webpack,感謝它對JavaScript開發者的大力支援。非常喜歡你這個工具!

Tobias: 不客氣。我要感謝社群。Webpack並不是“我的”工具,它是500多位志願者共同的成果。Webpacks成功也是源於這個偉大的生態。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2800308/,如需轉載,請註明出處,否則將追究法律責任。

相關文章