ECMAScript modules规范示例详解——介绍
- 1. 介绍
- 2. 创建一个模块(module.js)
- 3. 导入模块(main.js)
- 4. 说明
1. 介绍
ECMAScript 模块 (ESM) 是 JavaScript 的官方标准,用于在 JavaScript 应用程序中导入和导出模块,在 ESM 中,您可以使用 import
和 export
语句来共享和使用不同模块中的功能。
以下是使用 ECMAScript 模块的一些示例:
2. 创建一个模块(module.js)
// 定义一个变量并导出
export const message = 'Hello, World!';// 定义一个函数并导出
export function sayHello(name) {console.log(`Hello, ${name}!`);
}// 默认导出,每个模块只能有一个默认导出
export default class Person {constructor(name) {this.name = name;}greet() {console.log(`Hi, my name is ${this.name}`);}
}
3. 导入模块(main.js)
// 导入module.js模块中的具名导出
import { message, sayHello } from './module.js';console.log(message); // 输出: Hello, World!
sayHello('Alice'); // 输出: Hello, Alice!// 导入Person类的默认导出
import Person from './module.js';const person = new Person('Bob');
person.greet(); // 输出: Hi, my name is Bob// 重新命名导入的绑定
import { message as msg } from './module.js';console.log(msg); // 输出: Hello, World!// 导入模块中所有的导出作为一个命名空间对象
import * as Module from './module.js';console.log(Module.message); // 输出: Hello, World!
Module.sayHello('Charlie'); // 输出: Hello, Charlie!
4. 说明
export
语句用于导出模块中的项,包括变量、函数、类等。import
语句用于导入其他模块导出的项。- 模块可以导出多个值(具名导出),或者一个默认导出。
- 默认导出可以直接导入,无需花括号,也可以赋予任何名字。
- 具名导出必须使用导出时相同的名称,除非使用
as
关键词重命名。 - 使用
import * as Alias
可以将整个模块导入为一个对象(通常称为“命名空间”对象),其中模块的所有导出都是此对象的属性。
注意,使用 ESM 需要在服务器或具有模块支持的环境(如最新版本的 Node.js 或现代浏览器)中执行。在 Node.js 中,确保执行的文件具有 .mjs
扩展名,或者在 package.json
中包含如下设置以支持 ESM:
{"type": "module"
}
此外,只要是模块化的 JavaScript 环境,都可以使用这种方式来管理和组织代码。