Tobias Koppers:我當初為什麼寫webpack
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我為什麼要使用Webpack?Web
- 你當初為什麼選擇了前端?前端
- 我為什麼冒險寫QuarkAdmin!
- 我們為什麼要閱讀webpack原始碼Web原始碼
- 我們為什麼要用英文寫文件?
- 為什麼我們從Webpack切換到Vite - ReplitWebVite
- [譯]我們為什麼要寫 super(props)?
- 我們為什麼要技術寫作
- 精讀:為什麼我們要寫super(props)
- [譯] 為什麼我用 JavaScript 來編寫 CSSJavaScriptCSS
- 伺服器當機,我為什麼一點也不慌?伺服器
- 當我談 HTTP 時,我談些什麼?HTTP
- 我為什麼開始寫技術公眾號
- 我為什麼要做IT
- 講道理,React中,我們為什麼需要寫 super(props)?React
- Jquery會死嗎?我為什麼不用vue寫富文字!jQueryVue
- 為什麼我不贊成開發來寫檢視
- 為什麼要寫作
- Twitter為什麼沒有當機?
- 我為什麼使用 JavaJava
- Android 效能優化(十二)之我為什麼寫效能優化Android優化
- 為什麼我拒絕用Kotlin編寫安卓應用?Kotlin安卓
- 資料庫管理-第121期 我為什麼寫文章(202301203)資料庫
- 當我們談論Promise時,我們說些什麼Promise
- 當我們談優化時,我們談些什麼優化
- 當我談自律的時候,我會談什麼(一)
- 因果迷境:為什麼我們會問“為什麼”?
- 想把大腦存進電腦,我為什麼要寫部落格
- 為什麼需要討論“當代性”?
- 當我討論遊戲是否“好玩”時我在說什麼?遊戲
- 當我們談論MOD時,我們在談論什麼?
- 當我們聊kubernetes operator時,我們在聊些什麼
- 當我談跑酷遊戲時,我在談些什麼遊戲
- 為什麼我們需要 VuexVue
- 我們為什麼要用RedisRedis
- 我們為什麼而工作
- 我們為什麼需要CDP?
- 人工神經網路初學:是什麼以及為什麼?神經網路