YSS

Write Less & Do More

理解webpack

本文只是简单说明讲清楚webpack,不做深入讲解。

说到webpack从2014年开始现在已经走了4多年头,我自己用它都已经用了2年多了。今天想总结性的说一下它。

概述

webpack概念很好理解,就是一个模块打包器,也就是解决你的打包问题,主要是合并代码和加版本号。

更细致一点讲,就要分四个模块去阐述:

入口

入口就是webpack打包的起点,通过入口文件,逐个加载合并依赖文件。

然后,入口最大的变化就是从之前的只支持单一入口文件,变成现在的可以支持多个入口文件。这个主要是为了支持多页面应用程序,比如传统多页面刷新。

出口

出口是跟入口对应的,出口可以配置的东西很多。最简单的就是配置是否要加hash值,要放到哪里。

当然,还有一个比较重要的一点,就是可以配置线上路径,因为正常情况下,我们生成的包文件,最终都是要发布到线上的静态服务上的。

loader

loader是webpack最具特色的一点,也是webpack在面世后立刻就受到欢迎的重要一点。

你可以通过loader配置,或者直接在引入的时候(import or require)直接加上对应的loader名字。

有个概念,之前叫“all in js”。就是把任意的文件都转成js处理。

plugins

plugins是webpack极具扩展性的体现。你可以用它实现几乎任何你想要的效果。

深究它的本质就是,在各个打包的环节加一些钩子(也可以理解为事件,生命周期),然后根据你自己需要去定制你自己想要的功能。

其实,经过前端这么多年的发展,基本上plugin的实现都是通过这种方式去做。

总结

整体看webpack的概念还是很简单的,思想也很简洁,但是实现就是另外一回事了。

事实上webpack现在趋势就是整合的东西越来越多,越来越标准化,一个配置就可以搞定之前需要自己做的很多事情。