郭震 AI公众号:郭震AI

8 Node.js 小白教程:模块系统之 ES 模块

发布日期:

分类: Node.js小白

预计阅读: 3 分钟

在上一篇文章中,我们讨论了 Node.js 的模块系统之 CommonJS 模块,了解到了如何使用 requiremodule.exports 来组织我们代码中的模块。在这一篇中,我们将探讨另一种模块系统——ES 模块(ECMAScript Modules),这也是现代 JavaScript 推荐的模块组织方式。ES 模块在浏览器中得到广泛应用,并且 Node.js 也逐步开始支持这一标准。

什么是 ES 模块?

ES 模块是 ECMAScript 2015(ES6)引入的一种标准化的模块系统。这种模块系统允许开发者使用 importexport 关键字来引入和导出模块,使得代码更加清晰和可维护。

ES 模块的基本语法

  • 导出模块

要导出一个变量、函数或类,可以使用 export 关键字。例子如下:

// myModule.js
export const name = 'Node.js';
export function greet() {
  console.log(`Hello, ${name}!`);
}
  • 导入模块

要导入一个模块,可以使用 import 关键字。可以使用默认导入和命名导入,具体如下:

// main.js
import { name, greet } from './myModule.js';

console.log(name); // 输出: Node.js
greet();           // 输出: Hello, Node.js!

在上面的示例中,我们从 myModule.js 文件中导入了 name 变量和 greet 函数,并使用它们。

Node.js 中使用 ES 模块

启用 ES 模块支持

在 Node.js 中,可以通过以下两种方法启用 ES 模块支持:

  1. 使用 .mjs 扩展名。
  2. package.json 文件中添加 "type": "module"

例如,假设我们选择第二种方法,可以创建一个 package.json 文件如下:

{
  "type": "module"
}

案例:创建一个简单的模块

让我们创建一个简单的 Node.js 应用,使用 ES 模块组织代码。

1. 创建项目结构

my-node-app/
│
├── package.json
├── index.js
└── utils.js

2. 编辑 utils.js 文件

utils.js 中,我们将导出一个简单的加法函数:

// utils.js
export function add(x, y) {
  return x + y;
}

export function subtract(x, y) {
  return x - y;
}

3. 编辑 index.js 文件

index.js 中,我们将导入上面的函数并使用它们:

// index.js
import { add, subtract } from './utils.js';

const sum = add(5, 3);
const difference = subtract(5, 3);

console.log(`Sum: ${sum}`); // 输出: Sum: 8
console.log(`Difference: ${difference}`); // 输出: Difference: 2

在 Node.js 中运行

确保你的 package.json 文件中含有 "type": "module",然后在终端中使用命令:

node index.js

你应该会看到如下输出:

Sum: 8
Difference: 2

ES 模块的特性

1. 静态分析

ES 模块的一个好处是支持静态分析,导入和导出的路径在编译时就能够确定。这使得工具(例如 IDE 和构建工具)可以更容易地分析依赖关系。

2. 使用 default 导出

一个模块可以有一个默认导出,使用 export default 语法:

// myDefaultModule.js
const myFunction = () => {
  console.log('This is my default function');
};

export default myFunction;

导入方式如下:

// main.js
import myFunction from './myDefaultModule.js';

myFunction(); // 输出: This is my default function

小结

在这一篇文章中,我们深入探讨了 Node.js 中的 ES 模块,包括其语法和用法。我们创建了一个简单的应用,演示了如何导入和导出模块,以及如何在 Node.js 环境中运行它们。相较于 CommonJS,ES 模块提供了更清晰的语法和更好的静态分析功能。

下一篇文章,我们将讨论 Node.js 中的异步编程之回调函数,进一步探索 JavaScript 的异步特性及其在 Node.js 中的应用。请保持关注!

微博邮件

相关内容

更多相关文章

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...