构建Webpack知识体系|青训营笔记

53 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第4天

学习Webpack的好处有可以理解前端“工程化”概念、工具、目标同时也是向高阶前端前进的必经之路,学好Webpack在一定程度上可以增加个人的核心竞争力。

webpack被定义为现代 JavaScript 应用程序的静态模块打包器(module bundler),是目前最为流行的JavaScript打包工具之一。

webpack会以一个或多个js文件为入口,递归检查每个js模块的依赖,从而构建一个依赖关系图(dependency graph),然后依据该关系图,将整个应用程序打包成一个或多个bundle。

由于webpack是用nodejs编写的,所以它依赖的运行环境就是nodejs。也正因为这一点,webpack只能识别JavaScript,所有非JavaScript(包括HTML,CSS,Typescript等)编写的文件都需要经过处理,这是借助对应的loader实现的。

webpack使用的是nodejs默认的模块系统:commonjs,借助nodejs提供的API来操作待打包项目的源文件(如fs模块、path模块等)。webpack将这些文件整合压缩后,输出到一个特定的目录下(通常是dist)。处理过的dist一般会被直接上传到静态资源服务器使用。

Webpack可以使我们的代码模块化和一致性,可以让多个文件资源合并成一个,通常未打包的项目通常体积庞大,文件数量众多。如果将其直接上传到服务器,用户访问网站时,浏览器会发送大量的http请求来下载这些文件,这会给服务器带来很大的压力,同时客户端的体验也非常不好。使用webpack就可以有效的解决这个问题。同时还支持模块化开发,支持高级js特性、支持typescript、coffeescript方言,还统一图片、css、字体等其他资源的处理模型,可所谓是功能强大,很好的帮我们处理了很多问题。

Webpack功能强大,使我们处理前端工程更方便,也是高阶前端的必经之路。