模块加载器负责加载模块。
我所知道的是模块加载器异步加载浏览器中的模块,而在Node.js中它同步加载。
我想确认这些信息是否正确。
答案 0 :(得分:7)
ES6模块加载器将是异步的,而node.js模块加载器则不是。
以下是模块加载器的一些关键方面:
模块代码自动以严格模式运行,无法选择退出严格模式。
在模块顶层创建的变量不会自动添加到共享全局范围。它们只存在于 模块的顶级范围。
模块顶层的
this
值未定义。在代码中不允许HTML样式的注释(来自的剩余功能) 早期的浏览器日。)模块必须导出模块外部代码可用的任何内容。
https://leanpub.com/understandinges6/read#leanpub-auto-modules
模块通常可以为开发人员解决几个问题。第一, 它们允许开发人员将代码分成更小的部分,称为 模块。其次,它们使开发人员可以轻松加载(注入) 那些模块进入其他代码段。注入模块 这样有助于保持项目代码与模块脱钩(阅读: 提高可测试性)。 第三,模块可以加载脚本 异步。这意味着应用程序可以更快地开始加载 它们不需要在执行代码之前加载所有脚本。
http://chimera.labs.oreilly.com/books/1234000001623/ch03.html#_default_values
另一方面,因为node.js
基于同步的require
,这意味着node.js
不提供开箱即用的异步变体。
当然,节点(async-require)有异步模块加载器,但不支持本机(带有require)。