Javascript ES6模块是同步加载还是异步加载?
模块加载器负责加载模块 我所知道的是模块加载器在浏览器中异步加载模块,而在Node.js中它是同步加载的Javascript ES6模块是同步加载还是异步加载?,javascript,node.js,module,ecmascript-6,Javascript,Node.js,Module,Ecmascript 6,模块加载器负责加载模块 我所知道的是模块加载器在浏览器中异步加载模块,而在Node.js中它是同步加载的 我想确认此信息是否正确。ES6模块加载器将是异步的,而node.js模块加载器不是 以下是模块加载器的一些关键方面: 模块代码自动在严格模式下运行,无法选择退出严格模式 在模块顶层创建的变量不会自动添加到共享全局范围。它们只存在于内部 模块的顶级范围 模块顶层的此值未定义。不允许在代码中使用HTML样式的注释(来自 早期的浏览器时代) 模块必须导出应可用于模块外部代码的任何内容 通常,
我想确认此信息是否正确。ES6模块加载器将是异步的,而node.js模块加载器不是 以下是模块加载器的一些关键方面:
- 模块代码自动在严格模式下运行,无法选择退出严格模式
- 在模块顶层创建的变量不会自动添加到共享全局范围。它们只存在于内部 模块的顶级范围
- 模块顶层的
值未定义。不允许在代码中使用HTML样式的注释(来自 早期的浏览器时代)此
- 模块必须导出应可用于模块外部代码的任何内容
node.js
基于同步的require
,这意味着node.js
不提供现成的异步变体
当然,node()有异步模块加载器,但不支持本机(带require)加载。问题是什么?ES6没有指定模块应该如何加载,并且支持这两种方式。那么,您想了解哪种特定的模块加载程序?请注意,node根本没有ES6模块加载器,因此我们很难告诉您有关它的任何信息。我建议你把最后一句话放在第一位。我通读了你的全部答案,并认为你直到最后一句才回答这个问题。答案中的信息通常很好,但我建议您先回答问题,然后再了解其他信息。“ES6模块加载程序将是异步的”这是错误的(或者至少做出了假设)。ES6没有指定如何加载模块。如何加载使用ES6定义的模块很可能取决于代码运行的环境。另外,考虑到ES6模块的定义方式,所有依赖项必须在模块本身能够执行之前加载,这使得依赖项如何加载变得无关紧要。那么——实验模块呢?然后是相同的rt(假设您使用mjs)。