Webpack 是主流模块打包器,通过入口文件构建依赖图,将各类资源视为模块并用 loader 转换,封装为自执行函数实现模块化执行,Plugin 则在构建全周期介入优化输出。

JavaScript 中的打包工具,核心是解决模块化代码如何组织、依赖分析和最终输出的问题。Webpack 是其中最主流的模块打包器(module bundler),它不只处理 JS,还能通过扩展机制统一管理 CSS、图片、字体等各类资源。
Webpack 的入口与依赖图构建
Webpack 从一个或多个入口文件(entry)开始,比如 ./src/index.js,逐行扫描 import、require 等语句,识别出当前模块所依赖的其他模块。这个过程会递归进行,直到所有直接、间接依赖都被纳入——最终形成一张完整的依赖关系图(dependency graph)。
- 单入口配置时,整张图被打包成一个 bundle(如
main.js) - 多入口时,每个入口独立构建自己的子图,生成对应 chunk(如
home.js、about.js) - 相同模块被多个入口引用,Webpack 默认只打包一次,避免重复
一切皆模块:Webpack 如何理解不同文件类型
在 Webpack 看来,每个文件都是一个模块——不只是 .js,还包括 .css、.png、.vue 甚至 .md。但它原生只认识 JavaScript 和 JSON,其余类型必须靠 loader 转换:
-
css-loader把 CSS 字符串转成 JS 模块,支持import './style.css' -
file-loader或asset-module把图片转为 URL 或 base64 内联 - loader 执行顺序是从右到左(如
['style-loader', 'css-loader']先处理 css,再注入 DOM)
模块如何被封装与执行
打包后的代码不是简单拼接,而是被包裹进一个自执行函数中,内部实现了一个轻量版的 require 函数(__webpack_require__):
标签: css vue javascript java html js node.js json node 浏览器 工具 ai
还木有评论哦,快来抢沙发吧~