ES6模块是同步加载还是异步加载?

2024-01-12

模块加载器负责加载模块。

我所知道的是,模块加载器在浏览器中异步加载模块,而在 Node.js 中它是同步加载的。

我想确认一下这个信息是否正确。


ES6 模块加载器将是异步的,而 Node.js 模块加载器则不是。

以下是模块加载器的一些关键方面:

  • 模块代码自动在严格模式下运行,并且无法选择退出严格模式。

  • 在模块顶层创建的变量不会自动添加到共享全局范围。它们仅存在于 模块的顶级范围。

  • 的价值this在模块的顶层是未定义的。不允许在代码中添加 HTML 风格的注释(这是来自 早期的浏览器时代)。

  • 模块必须导出模块外部的代码可用的任何内容。

https://leanpub.com/understandinges6/read#leanpub-auto-modules https://leanpub.com/understandinges6/read#leanpub-auto-modules

一般来说,模块可以为开发人员解决几个问题。第一的, 它们允许开发人员将代码分成更小的部分,称为 模块。其次,它们使开发人员可以轻松加载(注入) 这些模块到代码的其他部分。注入模块 这样有助于保持项目代码与模块分离(阅读: 提高了可测试性)。第三,模块可以加载脚本 异步地。这意味着应用程序可以更快地开始加载,因为 它们不需要在执行代码之前加载所有脚本。

http://chimera.labs.oreilly.com/books/1234000001623/ch03.html#_default_values http://chimera.labs.oreilly.com/books/1234000001623/ch03.html#_default_values

另一方面因为node.js是基于require这是同步的,这意味着node.js不提供开箱即用的异步变体。

当然,还有节点的异步模块加载器(异步要求 https://www.npmjs.com/package/async-require),但本机(使用 require)不支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ES6模块是同步加载还是异步加载? 的相关文章

随机推荐