webpack是啥

208 阅读2分钟

这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

前言

这是一个专栏系列,一步一步的学习和深入webpack5,没错5,不是4。
学习的一个很好的习惯,就是写作,生命不止,代码不停,写作不休。

webpack是什么

官网的解释:

本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。

简单点,基于模块的现代JavaScript应用程序的静态资源打包工具。

补充一点点:

凡是都有一个出发点,webpack的出发点是入口, 当然可以有多个入口, 入口一般是JS文件,不限于(.js, .ts, .jsx, .tsx, .vue)结尾的文件。

他会从入口找到依赖关系, 依赖的资源还可能依赖其他资源,是一个递归查找的过程, 当然她会缕清所有的依赖关系,按照一定的规则把模块组成bundle,最后生成静态文件, 最后我们放到服务器或者CDN, 程序就嗖嗖的跑起来。

解决了什么问题

  1. 文件依赖管理
  2. 模块化的方式开发
  3. 语法转化,把ES6, TypeScript, Sass, css in JS等等语法转为引擎能解析的代码。
  4. 通过监听文件变化执行更新,提升开发效率
  5. 资源优化(合并,压缩,去冗余等等)
  6. 等等

当然,其他类似的打包工具多多少少也解决了不少的问题, 比如 rollup, snowpack, vite, parcel等等。

webpack万物皆模块,强大的生态圈,各式各样的plugin, loader,基本只要你想得到,就能得到,假如没有,还可以自己开发一个。

其对web应用的支持度友好,让其在前端大受欢迎, 一段时间内成为一哥。

一点感慨

成了其成功的设计,估计失败也是其设计,让其上限受到制约。

vite的横空出世,体验的人都知道,速度那个杠杠的。

想想也是, 一个时代一个产物, 之前还在用jquery和 requirejs, 转眼就成为了古董。

岁月静好,跟上时代的步伐,坚定不移的前进吧。

小结

今天你收获了吗?

引用

Webpack的理解以及解决了的问题
webapck的一些概念