Webpack 如何使用 externals

阅读时长 4 分钟读完

在开发前端应用过程中,我们往往会依赖第三方库和包。这些第三方库在生产环境中,我们希望能从 CDN 加载,这样可以减小我们自己的服务器的负担,同时也能加快应用的加载速度。

Webpack 是一个非常流行的前端打包工具,它有一个选项叫做 externals,可以帮助我们实现从 CDN 加载第三方库的功能。本文将介绍 externals 的用法,以及如何在实际项目中应用它。

什么是 externals

当我们使用importrequire 语句去引入一个模块时,Webpack 会将这个模块打包到 bundle 中。而有些模块是我们不希望被打包到 bundle 中的,我们希望它们能被从外部引入,这时候就可以使用externals选项。

通过使用externals选项,我们可以告诉 Webpack,某个模块不需被打包,而是在运行时从外部获取。我们可以通过简单的配置将这些模块从 bundle 中剔除出去,达到减小 bundle 大小、优化打包速度的目的。

如何配置 externals

我们以 lodash 库为例,来看如何配置 externals。

在我们的项目中使用 lodash 库时,安装依赖后,使用 import语句就可以引入:

lodash 库的全局变量名为 _,我们可以在 HTML 中通过 CDN 直接引用它:

为了让 Webpack 将 lodash 库从 bundle 中剔除出去,修改我们的 Webpack 配置如下:

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

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

externals 选项是一个对象,其中的属性表示库的名称,值表示从外部引入的全局变量。

在该配置中,我们将 lodash 的库名称 lodash 映射到了全局变量 _。这样,Webpack 就知道从哪里获取 lodash 了,而不会将它打包进 bundle 中。

如何在实际项目中应用 externals

在实际项目中,使用externals选项需要注意以下几点:

  1. 需要通过 <script>标签引用 CDN 中的库,确保在运行时能够正确地获取到所需模块。

  2. 在引用某个库时,需要知道全局变量名称。这些信息可以在库的文档中找到。

  3. 如果你的项目下的某个模块依赖于 externals 中的某个库,那么你需要确保这个库在运行时能够正确加载,否则会出现报错。

示例代码

下面是一个完整的 Webpack 配置文件,其中配置了从 CDN 加载 lodash 库。

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

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

其中 src/index.js 文件的内容如下:

在 HTML 文件中引用 CDN 中的 lodash 库:

在运行应用时,我们会看到控制台输出了 2,说明我们成功地使用了 .externals 配置选项,从 CDN 加载了 lodash 库。

总结

在本文中,我们介绍了 Webpack 中的 externals选项,它能够让我们从 CDN 加载第三方模块,最大程度地减小 bundle 的大小。我们还通过示例代码演示了如何在实际项目中使用。

希望本文可以帮助你更好地理解 Webpack 中的 externals,并能够在实际项目中灵活运用。

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

纠错
反馈