在 ES6 中,我们已经可以使用 export
和 import
关键字来进行模块导出和导入。但是在实际开发中,我们有时候需要将多个模块导出为一个对象,或者将多个对象导出为一个模块。这时候,ES11 中的新语法 export-as
就能派上用场了。
export-as 的基本用法
export-as
可以将多个模块导出为一个对象,或者将多个对象导出为一个模块。它的基本语法如下:
// 将多个模块导出为一个对象 export { module1, module2, ..., moduleN } as namespace; // 将多个对象导出为一个模块 export { object1, object2, ..., objectN } from 'module';
其中,namespace
是一个对象,它包含了所有要导出的模块;module
是要导入的模块的路径。
将多个模块导出为一个对象
假设我们有两个模块 module1.js
和 module2.js
,它们分别导出了一个函数:
// javascriptcn.com 代码示例 // module1.js export function foo() { console.log('foo'); } // module2.js export function bar() { console.log('bar'); }
现在,我们想要将这两个模块导出为一个对象 utils
,可以使用 export-as
:
// utils.js export { foo } from './module1.js'; export { bar } from './module2.js'; export { foo as default } from './module1.js'; // 将 foo 导出为默认导出项 export { foo, bar } as utils;
这样,我们就可以在其他模块中通过 import
关键字来导入 utils
对象了:
// other.js import { utils } from './utils.js'; utils.foo(); // 输出 'foo' utils.bar(); // 输出 'bar'
将多个对象导出为一个模块
假设我们有两个对象 obj1
和 obj2
,它们分别包含了一些属性和方法:
// javascriptcn.com 代码示例 // obj1.js export const name = 'obj1'; export function sayHello() { console.log(`Hello, I'm ${name}`); } // obj2.js export const name = 'obj2'; export function sayHello() { console.log(`Hello, I'm ${name}`); }
现在,我们想要将这两个对象导出为一个模块 objects
,可以使用 export-as
:
// objects.js export { name as name1, sayHello as sayHello1 } from './obj1.js'; export { name as name2, sayHello as sayHello2 } from './obj2.js'; export { name1, sayHello1, name2, sayHello2 } from './objects.js';
这样,我们就可以在其他模块中通过 import
关键字来导入 objects
模块的属性和方法了:
// other.js import { name1, sayHello2 } from './objects.js'; console.log(name1); // 输出 'obj1' sayHello2(); // 输出 'Hello, I'm obj2'
总结
export-as
是 ES11 中新增的一个语法,它可以将多个模块导出为一个对象,或者将多个对象导出为一个模块。在实际开发中,我们可以使用它来更方便地组织和管理模块。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6553f8c8d2f5e1655dda8ba9