Webpack知识点汇总

一、基础概念

1、Webpack 是什么?

Webpack 是前端模块化打包工具,能把项目里的 JS、CSS、图片、Vue/React 组件等资源,打包成浏览器能识别的静态文件,同时处理模块依赖、做兼容转换和性能优化

2、Webpack 五大核心概念

  1. Entry:打包的入口文件,从这里开始分析依赖
  2. Output:打包产物的输出位置和文件名
  3. Loader:处理 Webpack 不认识的非 JS 文件
  4. Plugin:扩展打包流程,做优化、生成文件等功能
  5. Mode:区分开发 / 生产环境,自动启用对应优化

3、Webpack 和 Vite 核心区别

  • Webpack:启动时要全量打包,项目变大后构建和热更新会变慢

  • Vite:开发环境基于 ESM 不打包、按需编译 ,热更新速度远快于 Webpack


二、Loader / Plugin(最高频)

1、Loader 和 Plugin 区别

  • Loader 是文件转换器,只负责把非 JS 文件(CSS、Vue、图片)转成 Webpack 能处理的模块
  • Plugin 是流程扩展器 ,介入整个打包生命周期,做压缩、生成 HTML、清理目录等全局功能

2、常用 Loader 及作用

  • babel-loader:把 ES6+ 转成 ES5,兼容低版本浏览器
  • css-loader:解析 CSS 文件里的导入和路径
  • style-loader:把解析后的 CSS 插入到页面标签中
  • vue-loader:处理 .vue 单文件组件
  • url-loader:小图片转 base64,大图片单独打包

3、常用 Plugin 及作用

  • HtmlWebpackPlugin:自动生成 HTML 并引入打包后的 JS/CSS
  • CleanWebpackPlugin:打包前清空 dist 目录
  • MiniCssExtractPlugin:把 CSS 抽成独立文件
  • TerserPlugin:压缩生产环境的 JS 代码

4、Loader 执行顺序

执行顺序固定:从右往左,从下往上,后面的 loader 先处理文件


三、入口 / 输出 / 开发服务

1、Entry 有几种配置?

  • 字符串:单入口,用于单页面应用
  • 对象:多入口,用于多页面应用,每个页面对应一个入口

2、hash /chunkhash/contenthash 区别

  • hash:整个项目任何文件改动,哈希值就变
  • chunkhash:当前代码块内容变了,哈希值才变
  • contenthash:只有文件本身内容变了,哈希值才变,生产环境最常用

3、devServer 作用: 启动本地开发服务器,支持热更新,还能配置代理解决开发时的跨域问题


四、代码分割 & 多入口

1、什么是多入口?

给多页面项目配置多个打包起点,每个页面单独打包出自己的 JS,访问时只加载当前页面的代码,不加载无关内容

2、什么是代码分包(Code Splitting)?

把打包后的大文件拆成多个小文件,实现按需加载,同时抽离公共代码,减小首屏加载体积

3、多入口和分包的区别?

  • 多入口:从打包源头拆分,针对多个页面
  • 分包:对打包结果拆分,抽公共代码、拆大文件两者经常配合使用,先分入口再抽公共代码

4、splitChunks 作用?

专门用来抽离公共代码,把第三方库(Vue、axios)和业务公共工具函数单独打包,避免重复打包


五、优化(必考)

1、Webpack Tree Shaking 原理

简单来说有三种:

  • usedExports:静态分析时,删掉导入了但没使用的代码
  • sideEffects:删掉模块里导出了但没被引用的变量
  • dead code elimination:最终打包时,彻底清理这些死代码

2、如何提升打包速度?

  • 开启 Webpack 缓存,二次构建更快
  • 排除 node_modules,不编译第三方依赖
  • 使用多进程 loader,利用 CPU 多核加速
  • 开发环境不启用压缩、抽离 CSS 等重型插件

3、如何减小打包体积?

  • 用 splitChunks 抽离公共代码
  • 路由 / 组件懒加载,按需加载
  • 压缩 JS、CSS 代码
  • UI 组件库按需引入
  • 小图片转 base64,减少请求
  • 开启 Tree Shaking 删除无用代码

六、高频其他

  1. 什么是热更新(HMR)? 代码修改后,只更新改动的模块,不刷新整个页面,保留页面原有状态,大幅提升开发效率。

  2. Webpack 构建流程读取配置 → 从入口分析依赖 → 用 Loader 编译文件 → 用 Plugin 扩展优化 → 输出打包产物到 dist。

  3. **打包后路径错误怎么办?**配置 output.publicPath,根据部署环境设置正确的公共路径,就能解决资源引用失败的问题。

相关推荐
RopenYuan2 小时前
FastAPI -API Router的应用
前端·网络·python
走粥2 小时前
clsx和twMerge解决CSS类名冲突问题
前端·css
Purgatory0013 小时前
layui select重新渲染
前端·layui
weixin199701080163 小时前
《中国供应商商品详情页前端性能优化实战》
前端·性能优化
怣疯knight3 小时前
Termux 运行 Node.js 实操记录(精简版)
node.js
赵孝正5 小时前
学习的本质是一个工程闭环:从模仿到内化的四阶段方法论(附风电实战案例)
前端·数据库·学习
Panzer_Jack7 小时前
easy-live2d v0.4.0 — 全面进化的 Live2D Web 开发体验
前端
软弹7 小时前
输入URL之后,都发生了什么
前端