在 ES2015 中引入的模块系统极大地改善了 JavaScript 的模块化开发。但是,模块化开发并不仅仅是导入和导出模块。在 ES2019 中,JavaScript 引入了一些新的导出扩展,这些扩展可以帮助我们更好地管理模块。
基本导出
在 ES2015 中,我们可以使用 export
关键字来导出模块。例如,我们可以导出一个函数:
// module.js export function greet(name) { return `Hello, ${name}!`; }
然后在另一个文件中导入这个函数:
import { greet } from './module.js'; console.log(greet('world')); // output: Hello, world!
命名导出
ES2015 的导出方式需要我们在导入时使用相同的名称。但是在某些情况下,我们需要在导出时使用不同的名称。在 ES2019 中,我们可以使用命名导出来解决这个问题。例如:
// module.js function greet(name) { return `Hello, ${name}!`; } export { greet as sayHello };
我们将 greet
函数命名为 sayHello
并导出。然后在另一个文件中导入它:
import { sayHello } from './module.js'; console.log(sayHello('world')); // output: Hello, world!
默认导出
在 ES2015 中,我们可以使用 export default
来导出一个默认的值。例如:
// module.js export default function greet(name) { return `Hello, ${name}!`; }
然后在另一个文件中导入它:
import greet from './module.js'; console.log(greet('world')); // output: Hello, world!
在 ES2019 中,我们可以使用命名导出和默认导出共存。例如:
-- -------------------- ---- ------- -- --------- -------- ----------- - ------ ------- ---------- - ------ - ----- -- -------- -- ------ ------- ---------- - ----------------- -- --- ------- ---------- -
然后在另一个文件中导入它:
import sayHello, { greet } from './module.js'; console.log(greet('world')); // output: Hello, world! sayHello(); // output: This is the default export.
聚合导出
有时,我们需要将多个模块聚合成一个模块,并导出它们。在 ES2019 中,我们可以使用聚合导出来实现这个目的。例如:
-- -------------------- ---- ------- -- ---------- ------ -------- ------------ - ------ ------- ---------- - -- ---------- ------ -------- ------------ - ------ ---- ---------- - -- -------- ------ - ---- --------------- ------ - ---- ---------------
然后在另一个文件中导入它们:
import { greet1, greet2 } from './index.js'; console.log(greet1('world')); // output: Hello, world! console.log(greet2('world')); // output: Hi, world!
结论
ES2019 中的导出扩展为我们提供了更多的选择,使我们能够更好地管理模块。除了基本导出和默认导出之外,我们还可以使用命名导出和聚合导出来解决特定的问题。在实际开发中,我们应该根据需要选择不同的导出方式。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/673af44939d6d08e88b0c273