摘要:在本教程中,您将学习如何通过 import 和 export 语句在 Node.js 中使用 ES 模块。
如何指示 Node.js 将 JavaScript 文件视为 ES 模块
Node.js 支持两种类型的模块
- CommonJS
- ES 模块 (ESM)(在 Node 14.0.0 或更高版本中受支持)。
默认情况下,Node.js 将 JavaScript 文件视为 CommonJS 模块。但是,您可以使用以下技术之一告诉 Node.js 将 JavaScript 文件视为 ES 模块
- 以
.mjs结尾的 JavaScript 文件 - 以
.js结尾的 JavaScript 文件,其最近的父级package.json文件包含一个顶级字段"type",其值为"module"。 - 传递参数
--eval或通过带有标志--input-type=module的STDIN传递到 node 命令。此技术在实践中很少使用,但它可用。
通过 .mjs 文件使用 Node.js ES 模块
首先,创建一个名为 math.mjs 的新文件,并添加以下代码
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
export { add, subtract };Code language: JavaScript (javascript)在 math 模块中
- 首先,定义
add和subtract函数。 - 其次,使用
export语句导出add和subtract函数。这是命名导出。
或者,您可以在 function 之前放置 export 关键字,如下所示
export function add(a, b) {
return a + b;
}
export function subtract(a, b) {
return a - b;
}Code language: JavaScript (javascript)其次,创建一个名为 app.mjs 的新文件,该文件使用 math 模块
import { add, subtract } from './math.mjs';
let a = 20,
b = 5;
let result = add(a, b);
console.log(`${a} + ${b} = ${result}`);
result = subtract(a, b);
console.log(`${a} - ${b} = ${result}`);Code language: JavaScript (javascript)在 app.mjs 文件中
- 首先,使用
import语句从math模块导入add和substract函数。 - 其次,调用
add和subtract函数。
第三,使用 node 命令运行 app.mjs 文件
node app.mjsCode language: CSS (css)您应该在控制台中看到以下内容
20 + 5 = 25
20 - 5 = 15在这个例子中,我们使用以 .mjs 结尾的文件,Node.js 将它们全部视为 ES 模块。
在 package.json 文件中设置 type 模块
首先,将 math.mjs 和 app.mjs 重命名为 math.js 和 app.js。
其次,创建一个 package.json 文件,其中包含值为 "module" 的顶级字段 type
{
"type": "module"
}Code language: JSON / JSON with Comments (json)第三,使用 node 命令运行 app.js 文件
node app.jsCode language: CSS (css)您应该看到与第一个示例中相同的输出。
使用 eval 命令行参数
以下示例使用 eval 参数和 --input-type=module 运行 node 命令
node --input-type=module --eval "import { delimiter } from 'path'; console.log(delimiter);"Code language: JavaScript (javascript)输出
;在这个例子中,我们将以下代码传递给 --eval 参数
import { delimiter } from 'path';console.log(delimiter);Code language: JavaScript (javascript)这会从 path 模块导入分隔符并将其输出到控制台。
同样,您可以使用以下命令
echo "import { delimiter } from 'path'; console.log(delimiter);" | node --input-type=moduleCode language: JavaScript (javascript)摘要
- 使用扩展名为
.mjs的 JavaScript 文件来指示 Node.js 将 JavaScript 文件视为 ES 模块。 - 在
package.json中设置"type": "module"字段,也可以指示 Node.js 将 JavaScript 文件视为 ES 模块。
本教程是否有帮助?