Webpack 打包优化:如何提取公共代码

阅读时长 5 分钟读完

在前端开发中,我们经常会使用 webpack 来打包我们的代码。当我们的项目变得越来越大,打包也就变得越来越慢,这时候我们就需要优化我们的 webpack 打包配置,提高打包速度。其中一个重要的优化方式就是提取公共代码。

什么是公共代码

公共代码,顾名思义,指的是在多个页面中共用的代码,包括但不限于第三方库,公共组件等。

举个例子,我们有两个页面 A 和 B,它们都使用了 Vue.js 框架。由于我们没做任何优化,每个页面都会把所有 Vue.js 相关的代码都打包进去,导致打包文件大小过大,加载速度过慢。我们可以通过提取 Vue.js 相关的代码成为公共代码,让 A 和 B 共用这些代码,从而减小打包文件大小,提高加载速度。

如何提取公共代码

Webpack 提供了多种方法来提取公共代码:

1. 使用 splitChunksPlugin 插件

Webpack v4+,推荐使用 splitChunksPlugin 插件。该插件使用新的方法来分离代码,我们可以通过在 webpack 配置中设置 optimization.splitChunks.chunk 对象来控制它的行为。

-- -------------------- ---- -------
-- -----------------
-------------- - -
  -- ---
  ------------- -
    ------------ -
      ------- ------
      -------- ------
      -------- --
      ---------- --
      ----------------- ---
      ------------------- ---
      ----------------------- ----
      ----- -----
      ------------ -
        ------- -
          ----- -------------------------
          ----- ----------
          ------- ------
          --------- ---
        --
        -------- -
          ---------- --
          --------- ----
          ------------------- ----
        -
      -
    -
  -
--

以上是一个示例的配置,我们可以修改 optimization.splitChunks 中的各个参数来达到不同的分离效果。

使用该插件可以减少很多手动配置,能够更好地帮助我们提取公共代码。

2. 使用 CommonsChunkPlugin 插件

Webpack v3-,可以使用 CommonsChunkPlugin 插件。

-- -------------------- ---- -------
-- -----------------
----- ------- - -------------------

-------------- - -
  ------ -
    ---- ---------------
    -------- ------------------
  --
  ------- -
    --------- -----------
  --
  -------- -
    --- -------------------------------------
      ----- ----------
      --------- ------------
    --
  -
--

以上是一个示例的配置,我们可以通过把公共代码拆分到单独的模块中(例如 vendors.js),来避免重复打包这些代码。我们可以在多页面的 webpack 配置中,使用 CommonsChunkPlugin 插件来提取公共代码。

3. 使用 require.ensure

Webpack v1+,可以使用 require.ensure 来异步加载模块。如果我们希望在特定的时候,才加载公共代码,可以使用这种方式。

-- -------------------- ---- -------
-- -------
------------------------------- ----------------- -
  --- ------ - -----------------------
  -- ---
---

-- --------
------------------------------- ----------------- -
  --- ------ - -----------------------
  -- ---
---

-- --------
------------------------------- ----------------- -
  --- ------ - -----------------------
  -- ---
---

以上是一个示例代码片段,我们可以将公共代码放在 common.js 中,通过 require.ensure 来异步加载它。整个应用程序只有在需要时才会去加载这部分代码。

总结

提取公共代码在前端项目中是一个常用的优化方式,我们可以通过 SplitChunksPlugin 或者 CommonsChunkPlugin 插件,以及 require.ensure 来实现。

通过使用这些方法,我们可以减小打包后的文件大小,提高网页的加载速度。同时,也让我们的项目更加可维护和可扩展。

写代码不仅仅是为了功能的实现,还包括了对性能优化等更加深入的思考。希望大家在前端开发中,不断探索和学习,写出更加优秀的代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646ebb24968c7c53b0d0ef16

纠错
反馈