Tobias Koppers是来自纽伦堡的自由软件开发者和顾问。他作为webpack的作者而闻名,现在,webpack正在被全世界数百万的开发者所使用。他一直热衷于JavaScript开发和开源项目。
Gregor:Tobias你好!现在整个JavaScript社区都在谈论webpack,甚至谷歌把它也集成到Angular CLI了。我也很自豪webpack来自纽伦堡,离我的家乡因戈尔施塔特(德国)很近。接下来请告诉我们,你当初是为什么想到要写webpack,它为什么那么快受到了大家的欢迎呢?
Tobias: Gregor你好。实际上,Google也间接参与了webpack的开发,在我沉迷于JavaScript之前,我还使用Java。谷歌有一个工具GWT(Google Web Toolki),它允许在Java开发一个客户端Web应用程序。GWT实际上是一个Java到JavaScript SPA的编译器,它也使用了一些谷歌的应用程序。
在GWT中,有一个功能我研究了很久,也就是代码拆分(code splitting)这个功能允许在延迟加载很少使用的代码。对于大型应用来说,这个功能对于保持较小的初始负载时间是特别重要的。而我在JavaScript开源工具(2012)中并没有见过这个功能,所以我也就萌生了开发webpack的想法。
也就是说,webpack就是为专注于代码拆分而生的,在我看来,这也就是为什么他能够收到大家欢迎的原因。随着Web应用越写越大和移动设备使用率的上升(相对脆弱的网络环境),这些应用对代码拆分的需求日益增强,如果不拆分代码,就很难实现预期的性能。
Gregor:许多人将webpack与NPM脚本 、Grunt和Gulp等任务工具进行比较。一些人真的使用webpack实现那个工具的功能。我以后也会使用NPM脚本和webpack。你对此有什么看法?除了webpack之外,你还使用过其他任务工具吗?
Tobias:NPM脚本对我来说已经足够了。事实上,把webpack当成Grunt和Gulp的替代品是不准确的,Grunt、Gulp这两种和webpack不属于同一类工具。Grunt、Gulp和NPM脚本是任务执行程序。
Webpack是模块打包工具,这两类工具具有不同的目标。但是,不可否认的是webpack确实简化了构建Web应用程序所需的必须使用Grunt,Gulp和NPM脚本才能实现的“任务”。NPM 脚本次啊是Grunt和Gulp的替代品。
不过,除了纯粹的web应用构建之外,任务执行程序也有他们存在理由:部署,代码检查,版本管理等等。
Gregor:在我的javascript训练课上,我的学员多次告诉我webpack上手有多难。你有收到相似的反馈吗?如果你收到了这样的反馈,你有想过如何改进吗?
Tobias:是的,确实有这样的反馈,但是,有很多使用者在会用之后还有这样的说法。实际上,只要你会写网页,都会觉得它比以往用的其他工具都要好用。
我认为这些反馈主要是因为webpack的概念明显和其他工具不一样。特别是从 Grunt / Gulp迁移过来时,任务执行程序的配置是指令式的,也就是说描述了任务执行程序每一步要执行的任务。Webpack,它的配置是声明式的,并不会描述webpack执行的每一步,而是会描述执行这些步骤的方式或者执行这些步骤之后的结果。
Gregor:你接下来的日程是怎么样的?有计划为下一个版本的webpack增加什么功能吗?
Tobias:现在还说不准,很多事情都有可能,我说几个重要的事项:
作用域提升:连接模块的小而更强大的方式
WebAssembly:支持web应用中的二进制代码
持久缓存:更快的初段编译
CSS(和HTML):更快的初始化编译
更多令人兴奋的小细节
使用者和赞助商决定这些功能实现的优先级,我们有一个投票页面,大家都可以在这个页面进行投票。所有人都可以表达自己的想法,但是赞助者和志愿者的观点权重更大,因为他们需要一些回报。而使用者肯定就是多多益善了。
Gregor:你可以给我们推荐几个webpack的最佳实践?
Tobias:使用按需加载,这是非常简单的而且效果也很好。
Gregor:你个人有什么目标吗?我们会不会很快看到报道,说你去山景城的谷歌了?
Tobias:我不这么认为,不久之后我将会是一个自由职业者,我会话更多的时间在开源上面,财务上面会依靠赞助商的捐助,尽管大多数时候捐赠是不够的,因此我也会接一些工作或者咨询来解决经济问题。我很想知道这样一种方式到底行不行的通。也许有人成为我的赞助商,可以为我的开源提供额外几个星期的赞助(hey!谷歌)
维护一个开源项目所需要付出的努力远远超出常人的想象,现在,代码评审和解决issues占据了我80%的时间。我既没有足够的时间写代码,也没有足够的时间重构。甚至我需要拖一段时间才能处理一些合并请求,我必须找一些时间去看看这些代码的细节。当然,志愿者并不想这样,我觉得这种情况将会改变,不久之后,我将会全职写webpack同时我也希望我能有更多时间写代码。
Gregor: 感谢您能够接受采访,也很感谢webpack,感谢它对这么我们这些javascript开发者的大力支持,我爱你的这个工具!
Tobias:不客气,我要感谢社区,Webpack不是我的工具,它是500多位志愿者共同的成功,Webpack的成功也是因为这个伟大的生态。
PS:webpack4.0已经新鲜出炉了,撸起袖子加油干
作者:tency小七
链接:https://www.jianshu.com/p/f70beb1cc2ff