写在前面
相信webpack
这个名称对于前端的同学来说并不陌生,只要你在用vue
、react
等等之类的框架,就得天天和它打交道。但是大部分人都只是直接怼一个vue-cli
脚手架生成一个项目,运行起来就开始一顿写,完全不会去看这个项目的其他相关的东西,今天开始,咱们就来说说这个又爱又恨的webpack
问题
使用wepack的时候经常会出现下面这些疑问
- 你webpack只能打包单页面的文件吗?
- WTF,我包怎么这么大,加载太慢了
- 我打包速度怎么这么慢,什么破玩意?
…
为什么要使用webpack
哈,你问我为什么要用?因为大家都在用啊😃😃。开个玩笑,前端发展到今天,新技术新思想新框架爆发式增长,当前的浏览器环境跑不赢啊,你说你写个ES6/7在浏览器环境都能跑起来?扯淡的。这个时候babel
就出现了,你跑不起来是吧,那我转成ES5
你总该跑起来吧~,那babel
我还是不能直接用啊,肯定得借助工具编译呀,所以我们需要webpack去做这件事情了。这个时候有人就要站出来说了,我gulp不服,我也能做,我就不用webpack
。你这么说我就要跟你唠唠了,现在我们先来比较一下webpack
和gulp
。
gulp
是 task runner
,Webpack
是 module bundler
webpack的优势在模块化,gulp
除了模块化方面都很不错。但是前端发展至今,模块化真的很重要,CMD
、AMD
就是模块化的产物。
简单来说,如果你当前项目需要模块化编程,那就选webpack
,如果是处理其他事情,比如把图片拼接成雪碧图或者压缩,那么gulp
是最擅长的
感兴趣的可以看看这个回答 gulp 有哪些功能是 webpack 不能替代的?
安装
这里可以参考webpack官网
开发环境 webpack: 4.34.0
入口(entry)
每个webpack
都会有一个entry
,就是入口的意思,指示 webpack
应该使用哪个模块,来作为构建其内部依赖图的开始。
注意点:
- 入口可以有多个,如果是单页面只需要一个入口,多页面可以设置多个入口
- 入口的文件必须是
.js
文件,因为webpack
只认识js
(不完全对,其实任意文件都可以,只是webpack
会把它当做js
来处理)
举个🌰