es6导入和导出中的模块说明符

Fre*_*kle 10 module ecmascript-6 es6-module-loader es6-modules

我对这些语句中的模块说明符引用的内容感到困惑:

export {bar} from "foo";

import {bar} from "foo";
Run Code Online (Sandbox Code Playgroud)

什么"foo"指的是?它不能是一个文件,因为它会是这样的"./foo".如果它不是文件,我认为它是一个ID.如何定义ID?

我正在从js文件导出,但导入将是type="module"firefox浏览器中的内联html脚本()的一部分.

浏览器版本(和浏览器设置)已经过验证,可与es6模块配合使用.

提前致谢.

Ber*_*rgi 17

ES6未指定模块说明符所引用的内容.
确实只是:一个标识符.而已.

留给环境将这些标识符解析为实际模块.加载器可能会将它们解释为相对文件路径,全局ID,npm模块名称以及其他任何内容.

在浏览器中,<script type="module">花了一些时间来指定,但它终于来了.模块说明符"foo"当前无效,浏览器将忽略该模块,因为它不知道如何处理它.它需要解析为要加载的URL的内容.杰克阿奇博尔德简洁地把它包起来:

目前不支持"Bare"导入说明符.有效的模块说明符必须与以下之一匹配:

  • 完整的非相对URL.如同,它通过时不会抛出错误new URL(moduleSpecifier).
  • 从一开始/.
  • 从一开始./.
  • 从一开始../.

其他说明符保留供将来使用,例如导入内置模块.

  • 您是否有任何关于如何找出 chrome 加载程序允许模块说明符“值”的提示?对包含对导出对象的引用的对象的引用可以用作模块说明符,这似乎是合理的。 (2认同)