在前端开发中,JavaScript 模块化是必不可少的一环。ES6 的导入 / 导出语法为 JavaScript 模块化提供了新的解决方案,而在 ES10 中,这种语法得到了进一步的完善。本文将深入探讨 ES10 中正确使用 ES6 模块的导入 / 导出。
导出
在 ES6 中,我们通过 export
将模块中的内容导出,如:
-- -------------------- ---- ------- -- ------ - -------- ------ ----- -- - ----- -- ------ - -------- ------ -------- --------- - ------ - - -- - -- ------ - ----- ------ ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------- --- ----------- ----- ------- - -展开代码
在 ES10 中,我们可以使用命名导出和默认导出。命名导出是指通过 {}
包裹的导出,而默认导出则是指不加 {}
直接导出。一个 JS 文件只能有一个默认导出,但是可以有多个命名导出。
命名导出
-- -------------------- ---- ------- -- ----- ------- - -------- ------ ----- -- - ----- -- ----- ------- - -------- ------ -------- -------------- - ------------------- ----------- - -- ----- ------- - ----- ------ ----- ------ - ----------------- - --------- - ----- - ---------- - ------------------- -- ---- -- ---------------- - -展开代码
我们可以使用以下方式来消费这些命名导出:
-- -------------------- ---- ------- -- ----- ------- - -------- ------ - -- - ---- -------------- ---------------- -- ----- ------- - -------- ------ - -------- - ---- -------------- ------------------ -- ----- ------- - ----- ------ - ------ - ---- -------------- ----- - - --- --------------- -------------展开代码
默认导出
-- -------------------- ---- ------- -- ------- ------- - -------- ------ ------- ----- -- ------- ------- - -------- ------ ------- -------- -------------- - ------------------- ----------- - -- ------- ------- - ----- ------ ------- ----- ------ - ----------------- - --------- - ----- - ---------- - ------------------- -- ---- -- ---------------- - -展开代码
消费默认导出的方式如下:
-- -------------------- ---- ------- -- ------- ------- - -------- ------ -- ---- -------------- ---------------- -- ------- ------- - -------- ------ -------- ---- -------------- ------------------ -- ------- ------- - ----- ------ ------ ---- -------------- ----- - - --- --------------- -------------展开代码
需要注意的是,如果一个模块同时有命名导出和默认导出,我们可以将它们同时导出:
-- -------------------- ---- ------- -- - ------ ---- ----- --- ------- ------- ------ ----- -- - ----- ------ ------- ----- ------ - ----------------- - --------- - ----- - ---------- - ------------------- -- ---- -- ---------------- - -展开代码
// consuming a module with named and default exports import Person, { PI } from "./module.js"; console.log(PI); const p = new Person("Jack"); p.sayHello();
导入
在 ES6 中,我们使用 import
来导入模块。在 ES10 中,我们可以使用动态 import()
。这种语法让我们可以在运行时动态地导入模块。
静态导入
-- -------------------- ---- ------- -- ------ ------- - ------ ------ ------ ---- -------------- ----------------------- -- ------ ------- - -------- ------ - -------- - ---- -------------- ------------------ -- ------ ------- - ----- ------ - ------ - ---- -------------- ----- - - --- --------------- -------------展开代码
动态导入
动态 import()
语法需要使用一个字符串作为参数,这个字符串就是我们需要导入的模块的位置。动态 import()
返回一个 Promise
对象,该对象将在加载完成后被解析为所导出的模块对象。这种语法让我们可以根据需要动态地加载模块。
// dynamic import const modulePath = "./module.js"; import(modulePath).then(module => { console.log(module.PI); const p = new module.Person("Jack"); p.sayHello(); });
需要注意的是,动态导入只能用于模块导入,不能用于加载普通的脚本文件。
总结
本文是对 ES10 中正确使用 ES6 模块的导入 / 导出的详细探讨。我们介绍了命名导出和默认导出的语法以及如何正确消费它们。我们还介绍了静态导入和动态导入的语法,并且重点强调了动态导入的使用场景。
希望本文能够帮助前端开发者更好地理解 ES10 中的模块化语法,并且在实际项目开发中使用得更加得心应手。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/653423847d4982a6eb80d9a0