摘要:在本教程中,您将学习如何使用 JavaScript 导出关键字从模块中导出值。
JavaScript 导出关键字简介
ES6 模块 允许您以模块化方式构建 JavaScript 代码。模块提供了一种标准化的方式,用于在 JavaScript 应用程序中定义和导入/导出可重用的代码片段。
默认情况下,ES6 模块封装其代码。这意味着在模块中定义的值(变量、函数、类 等)默认情况下无法从模块外部访问。这可以防止命名冲突,并促进更好的代码结构。
模块可以使用 export
关键字导出值(变量、函数、类等)。
export
关键字从模块中导出值,以便您可以在其他模块中使用它们。有两种类型的导出:
- 命名导出
- 默认导出
一个模块可以具有多个命名导出,但只有一个默认导出。
命名导出
一个模块可以具有多个命名导出。在实践中,当您需要从模块导出多个值时,您使用命名导出。
导出变量
以下示例展示了如何从模块导出变量 count
let count = 1;
export { count };
Code language: JavaScript (javascript)
在此示例中:
- 首先,声明一个变量
count
并将其值初始化为100
。 - 然后,通过将它们放在
export
关键字后面的花括号中,导出count
变量。
可以使用以下语句将变量声明和导出合并到一个语句中:
export let count = 1;
Code language: JavaScript (javascript)
类似地,您可以导出使用 const
关键字声明的变量:
export const MIN = 0;
Code language: JavaScript (javascript)
要导出多个变量,可以使用逗号 (,
) 将它们分隔开:
let count = 1;
const MIN = 0, MAX = 10;
export { MIN, MAX, count };
Code language: JavaScript (javascript)
导出函数
导出函数与导出变量具有相同的语法:
function increase() {
// ..
}
export { increase };
Code language: JavaScript (javascript)
以及:
export function increase() {
// ...
}
Code language: JavaScript (javascript)
导出类
与变量和函数一样,您可以使用 export
关键字导出类,例如:
class Counter {
constructor() {
this.count = 1;
}
increase() {
this.count++;
}
get current() {
return this.count;
}
}
export { Counter };
Code language: JavaScript (javascript)
在此示例中,我们定义了一个 Counter
类并将其导出。您可以使用以下语句定义一个类并将其导出:
export class Counter {
constructor() {
this.count = 1;
}
increase() {
this.count++;
}
get current() {
return this.count;
}
}
Code language: JavaScript (javascript)
导入命名导出时,您需要使用确切的名称并在花括号中指定它们。例如,以下代码导入 Counter
类:
import { Counter } from 'module.js';
Code language: JavaScript (javascript)
默认导出
一个模块可以有一个默认导出。要使用默认导出导出值,请使用 default export
关键字。例如:
let message = 'Hi';
export { default as message };
Code language: JavaScript (javascript)
它等效于以下代码:
export default let message = 'Hi';
Code language: JavaScript (javascript)
导入默认导出时,您不需要将变量放在花括号中:
import message from 'module.js';
Code language: JavaScript (javascript)
请注意,如果消息是使用命名导出导出的,则需要将其放在花括号中:
import { message} from 'module.js';
Code language: JavaScript (javascript)
这是导入命名导出和默认导出的主要区别。
类似地,您可以使用默认导出从模块导出函数或类:
export default function increase() {
// ..
}
Code language: JavaScript (javascript)
以及:
export default class Counter {
// ...
}
Code language: JavaScript (javascript)
重命名命名导出
使用命名导出导出值时,您可以像这样重命名它:
class Counter {
// ..
}
export { Counter as MyCounter };
Code language: JavaScript (javascript)
导出时重命名值有助于避免命名冲突。请注意,导入该类的模块也可以在导入时重命名它:
import { Counter as MyCounter } from 'module.js';
Code language: JavaScript (javascript)
重新导出
一个模块可以从另一个模块导入值并立即导出它们,如下所示:
import { Counter } from 'module.js';
export { Counter };
Code language: JavaScript (javascript)
JavaScript 允许您使用 export from
语法缩短此操作:
export { Counter } from 'module.js';
Code language: JavaScript (javascript)
总结
- 使用 JavaScript
export
关键字从模块中导出变量、函数和类。 - 导出可以是命名导出和默认导出。一个模块可以具有多个命名导出,但只有一个默认导出。