这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战。
前言
这是一个专栏系列,一步一步的学习和深入webpack5,没错5,不是4。
学习的一个很好的习惯,就是写作,生命不止,代码不停,写作不休。
webpack是什么
官网的解释:
本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。
简单点,基于模块的现代JavaScript应用程序的静态资源打包工具。
补充一点点:
凡是都有一个出发点,webpack的出发点是入口, 当然可以有多个入口, 入口一般是JS文件,不限于(.js, .ts, .jsx, .tsx, .vue)结尾的文件。
他会从入口找到依赖关系, 依赖的资源还可能依赖其他资源,是一个递归查找的过程, 当然她会缕清所有的依赖关系,按照一定的规则把模块组成bundle,最后生成静态文件, 最后我们放到服务器或者CDN, 程序就嗖嗖的跑起来。
解决了什么问题
- 文件依赖管理
- 模块化的方式开发
- 语法转化,把ES6, TypeScript, Sass, css in JS等等语法转为引擎能解析的代码。
- 通过监听文件变化执行更新,提升开发效率
- 资源优化(合并,压缩,去冗余等等)
- 等等
当然,其他类似的打包工具多多少少也解决了不少的问题, 比如 rollup, snowpack, vite, parcel等等。
webpack万物皆模块,强大的生态圈,各式各样的plugin, loader,基本只要你想得到,就能得到,假如没有,还可以自己开发一个。
其对web应用的支持度友好,让其在前端大受欢迎, 一段时间内成为一哥。
一点感慨
成了其成功的设计,估计失败也是其设计,让其上限受到制约。
vite的横空出世,体验的人都知道,速度那个杠杠的。
想想也是, 一个时代一个产物, 之前还在用jquery和 requirejs, 转眼就成为了古董。
岁月静好,跟上时代的步伐,坚定不移的前进吧。
小结
今天你收获了吗?