Coursera 笔记

Module 02 · Introduction to Automated Build Tools (Webpack)自动化构建工具(Webpack)简介

Webpack Best PracticesWebpack 最佳实践指南

Coursera ↗

观看完本视频后,您将能够:

  • 识别 Webpack 关键优化最佳实践
  • 描述 Webpack 关键优化技术的优势

为什么需要优化 Webpack?

Webpack 是一个被广泛使用的 模块打包工具,帮助开发者构建高效且优化的 Web 应用程序。虽然 Webpack 本身强大,但如果没有正确优化,可能会导致 代码冗余、加载缓慢,影响应用性能。

为了确保应用高效运行,我们需要采用 Webpack 最佳实践 来 优化性能、减少构建时间、提高加载速度。


Webpack 最佳实践

本次课程将介绍以下 Webpack 最佳实践 及其 优化效果:

最佳实践 优化效果
生产模式(Production Builds) 提高应用运行性能,减少文件体积
使用 Source Maps 便于调试,追溯压缩代码的原始位置
懒加载(Lazy Loading) 仅在需要时加载模块,加快首屏加载速度
文件包含与排除(Include/Exclude) 仅处理必要的文件,提高编译效率
模块复用(Reusing Modules) 减少重复代码,提高构建速度
分割 Bundles(Splitting Bundles) 细分代码块,优化资源加载
缓存策略(Caching) 利用缓存减少构建时间,优化加载性能
Tree Shaking(摇树优化) 移除未使用代码,减少最终包体积

1 生产模式(Production Mode)优化

生产模式(Production Mode) 通过 代码压缩(Minification)、Tree Shaking、Scope Hoisting 等优化,使应用运行更快,占用更少的资源。

为什么要使用生产模式?

✅ 性能优化:Webpack 会自动执行 代码压缩、Tree Shaking 等优化操作
✅ 减少包体积:移除无用代码,优化资源管理
✅ 提高运行效率:减少不必要的计算,使应用加载更快

如何启用生产模式?

在 Webpack 配置文件中:

module.exports = {
  mode: 'production', // 生产模式
};

2 使用 Source Maps 进行调试

在 Webpack 打包后,代码会被压缩、混淆,导致 难以调试。
Source Maps 允许开发者追踪 压缩后的代码 到 原始代码位置,提升调试效率。

如何启用 Source Maps?

module.exports = {
  devtool: 'source-map', // 生成 Source Map
};

📌 开发模式建议使用 cheap-module-eval-source-map
📌 生产模式建议使用 source-map(不影响运行性能)


3 懒加载(Lazy Loading)优化加载速度

懒加载(Lazy Loading) 指的是 仅在需要时加载 JavaScript 模块,避免在应用启动时加载所有代码,从而加快首屏加载速度。

如何实现懒加载?

使用 import() 进行动态导入:

import('./module').then(module => {
  module.default();
});

📌 Webpack 会自动将懒加载模块拆分成单独的 JS 文件,仅在需要时加载!


4 控制文件包含与排除(Include/Exclude)

Webpack 允许使用 exclude 和 include 指定哪些文件需要处理,从而提高编译效率。

示例

module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/, // 排除 node_modules
        include: /src/, // 仅处理 src 目录
        use: 'babel-loader',
      },
    ],
  },
};

📌 这样可以避免编译不必要的文件,提高打包速度!


5 复用模块(Reusing Modules)优化构建

Webpack 允许多个部分共用相同的代码,减少最终打包体积,提高构建效率。

如何实现模块复用?

module.exports = {
  optimization: {
    splitChunks: {
      cacheGroups: {
        commons: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          chunks: 'all',
        },
      },
    },
  },
};

📌 这将提取 node_modules 内的公共依赖项,避免重复打包!


6 代码分割(Bundle Splitting)优化加载

Webpack 允许将应用拆分成多个小的代码块(Chunks),避免一次性加载所有资源,优化首屏渲染。

如何实现代码分割?

module.exports = {
  optimization: {
    splitChunks: {
      chunks: 'all', // 自动分割代码
    },
  },
};

📌 这样可以实现更快的加载速度,提高用户体验!


7 Webpack 缓存(Caching)优化加载性能

Webpack 支持缓存机制,可减少构建时间,并优化资源加载性能。

如何启用缓存?

在 output 中添加 [contenthash]:

module.exports = {
  output: {
    filename: '[name].[contenthash].js', // 生成带有哈希值的文件名
  },
};

📌 这样可确保文件内容变更时,浏览器才会重新下载,提升缓存命中率!


8 Tree Shaking(摇树优化)移除未使用代码

Tree Shaking 是 Webpack 自动移除未使用的代码 的优化技术,可减少最终包体积。

如何启用 Tree Shaking?

  • 确保 ES6 模块(ESM)支持
  • Webpack 生产模式默认开启
module.exports = {
  mode: 'production',
  optimization: {
    usedExports: true, // 启用 Tree Shaking
  },
};

📌 这将自动剔除未使用的代码,使打包更轻量!


总结

在本视频中,您学习了 Webpack 的 8 大最佳实践 及其优化效果:

最佳实践 优化效果
生产模式(Production Mode) 提高性能,减少文件体积
使用 Source Maps 便于调试,追溯代码来源
懒加载(Lazy Loading) 加快首屏加载速度
文件包含与排除(Include/Exclude) 提高编译效率
复用模块(Reusing Modules) 共享代码,减少冗余
代码分割(Bundle Splitting) 细分代码块,优化资源加载
缓存(Caching) 利用缓存减少构建时间
Tree Shaking(摇树优化) 移除未使用代码,减少包体积

这些最佳实践将 提升应用性能、优化资源管理、提高加载速度!🚀