📅  最后修改于: 2023-12-03 14:41:01.098000             🧑  作者: Mango
在早期版本的 JavaScript 中,只有全局作用域和函数作用域,没有模块作用域。这就意味着,如果你有一个变量或函数定义了多次,后面的定义会覆盖前面的定义。另外,JavaScript 没有原生支持模块化,这导致了编写和维护大型应用程序时非常困难。
ES6 引入了模块化,这是现代 JavaScript 中最强大和最受欢迎的功能之一。使用 ES6 模块可以轻松地编写可重用、可维护和可扩展的代码,它们还可以让你轻松地将代码拆分成小块,以便可以按需加载。
我们使用 export
关键字将函数、变量或对象导出为模块。这样做会将它们暴露给其他模块,并使它们可访问。下面是一个简单的示例:
// myModule.js
export const message = 'Hello World!';
export function sayHello(name) {
console.log(`Hello, ${name}!`);
}
在上述代码中,我们声明了一个名为 message
的常量和一个名为 sayHello
的函数,并将它们导出为模块。该模块可以在其他文件中使用。
要在其他文件中使用导出的变量和函数,我们需要使用 import
关键字将它们导入到我们的文件中。
// main.js
import { message, sayHello } from './myModule.js';
console.log(message);
sayHello('Tom');
在上述代码中,我们使用 import
语句导入了 message
和 sayHello
。我们可以将它们从文件 ./myModule.js
中引入,并在 main.js
中使用它们。这里,我们将 message
打印到控制台并调用 sayHello
函数。
除了导出函数、变量和对象之外,我们还可以使用默认导出来导出一个模块。顾名思义,一个模块只能有一个默认导出,而其他的导出需要使用 {}
括号包裹。
// myModule.js
function sayGoodbye(name) {
console.log(`Goodbye, ${name}!`);
}
export default sayGoodbye;
在上述代码中,我们将 sayGoodbye
函数作为默认导出,并将其导出为模块。该模块可以在其他文件中使用。
// main.js
import sayGoodbye from './myModule.js';
sayGoodbye('Tom');
在上述代码中,我们导入了默认导出,并使用它在 main.js
中调用了 sayGoodbye
函数。
ES6 模块的一些重要好处包括:
综上所述,ES6 模块是现代 JavaScript 中最强大和最受欢迎的功能之一,它对于编写和维护大型应用程序非常有帮助。