利用 Babel 实现 ES6 模块引入与导出

· 约 5 分钟读完

前言

ES6 是 ECMAScript 的第六个版本,由于具有诸多新特性,如模块化、Lambda 表达式、Class 等等,因此受到广泛欢迎。

但是,由于各浏览器支持 ES6 特性的进度不一,因此有时候需要使用 Babel 来编译 ES6 代码,将其转换为 ES5 代码,以便在现有浏览器上运行。

本篇文章将详细介绍如何利用 Babel 实现 ES6 模块引入与导出。

模块引入

在 ES6 中,我们可以使用 import 语句来引入模块。

例如,以下代码引入了 lodash 模块:

对于没有使用 ES6 的浏览器,则可能无法解析上述语句。因此,我们需要使用 Babel 将其转换为 ES5 代码,才能够在现有浏览器中运行。

首先,我们需要安装 Babel 的相关插件:

接着,在项目根目录下创建 .babelrc 文件,并在其中添加以下内容:

上述配置中,targets 属性指定了我们要支持的浏览器版本。

然后,我们就可以使用 Babel 转换代码了。在终端中执行以下命令:

其中,input.js 是要转换的源代码文件,output.js 是生成的目标代码文件。

如果一次性需要转换多个文件,则可以在 input.js 中指定多个源代码文件,如下所示:

执行上述命令后,file1.js 和 file2.js 文件将会被转换,并生成到 build/ 目录下。

模块导出

除了模块引入外,ES6 还提供了一种新的方法来导出模块。我们可以使用 export 语句将模块导出为一个模块对象。

例如,以下代码示例导出了一个常量 PI:

同样地,对于没有使用 ES6 的浏览器,则需要使用 Babel 将其转换为 ES5 代码。

和上一节一样,我们需要首先安装 Babel 的相关插件:

接着,在 .babelrc 文件中添加以下内容:

上述配置中,我们新增了一个插件 @babel/plugin-transform-modules-commonjs,用于将 ES6 模块转换为 CommonJS 模块。这是因为大多数浏览器或其他环境只支持 CommonJS 模块化方式。

然后,我们就可以使用 Babel 转换代码了。执行以下命令:

和上一节一样,input.js 是要转换的源代码文件,output.js 是生成的目标代码文件。如果一次性需要转换多个文件,则可以在 input.js 中指定多个源代码文件。

示例

假设我们有以下两个文件,一个是定义了常量 PI 的 math.js 文件:

另一个是引入了 math.js 模块的 app.js 文件:

我们可以通过执行以下命令,将这两个文件都转换为 ES5 代码:

转换后的 math.es5.js 文件内容如下:

转换后的 app.es5.js 文件内容如下:

转换后的代码可以在 IE11、Chrome、Firefox 等浏览器中正常运行。

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