在说为什么要使用webpack之前,先讲讲模块化
没有模块化之前,全局只有一个JS文件,所有的方法变量都写在这个JS文件中,导致文件过大,命名冲突,难以维护 所以就希望把功能按模块分成几个小的JS分别引入
但是这种方式也只是把大文件分成了多个小的JS文件,没有实质性的改变,命名冲突,变量污染的问题还是存在,而且还需要维护小JS之间的依赖关系,从上到下的顺序一般都不能轻易变动,否则变量就找不到
解决变量污染的问题,就是需要让每个模块都有自己的私域,且只有函数可以构建作用域,那么自然就想到了立即执行函数,立即执行函数可以为每个JS创建自己的独立作用域,这就是模块化的雏形:代码隔离,作用域隔离,功能纯粹
经过不断的发展和完善,“民间”产生了CommonJS 、AMD、CMD等模块化方案,2015年,官方也发布了esModule模块化方案,百家争鸣
模块化方案趋于成熟,变量污染的问题解决了,可与此同时,模块越来越多,html页面上还是需要引入多个
webpack是建立在模块化基础之上的,作用就是打包模块
你不需要再显式的调整script标签顺序来梳理依赖关系,你只要给webpack一个入口,他会从入口开始 分析你的项目目录,自动的帮你分析你的项目依赖是啥样的,把所有的依赖给你串起来,
不管是CMD、AMD、CommonJs 还是ESmodule,只要是模块,他统统可以打包,就是把你写的乱七八糟的引入和依赖的脚本打包成一个大的JS文件,不仅是JS,同时借助不同的loader还可以打包CSS、图片等非JS文件,总之就是给你一股脑的放在一个JS文件里,给他一个入口和出口,别的你就不用操心了,安安静静地使用模块化引入即可,打包完的文件浏览器还都认识,就是强大。