在早期版本的 JavaScript 中,没有提供原生的模块导入功能,因此开发者们尝试过各种不同的方法来解决这个问题。然而,自 2015 年 (ES6) 以来,JavaScript 引入了 ES6 模块标准,这使得在 Node.js 中导入模块变得更加规范。现代浏览器也广泛支持这一标准。
为了与旧版浏览器兼容,可以使用例如 Webpack 和 Rollup 这样的构建工具,或使用 Babel 这样的转译工具。
ES6 模块
自 Node.js v8.5 起,ECMAScript (ES6) 模块已经得到支持,当时需要使用 --experimental-modules
标志。而在至少 Node.js v13.8.0 之后,这一功能不再需要额外的标志。在 package.json
中使用 "type": "module"
或将文件扩展名更改为 .mjs
,都可以启用 ESM(ES 模块)。
使用 package.json
配置模块类型
在 package.json
中添加如下配置:
{
"type": "module"
}
然后在 module.js
文件中:
export function hello() {
return "Hello";
}
在 main.js
文件中:
import {
hello } from './module.js';
let val = hello(); // val 是 "Hello"
使用 .mjs
扩展名
若使用 .mjs
扩展名,在 module.mjs
文件中:
export function hello() {
return "Hello";
}
在 main.mjs
文件中:
import {
hello } from './module.mjs';
let val = hello