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

时间:2017-07-05 15:38:30

标签: module ecmascript-6 es6-modules es6-module-loader

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

export {bar} from "foo";

import {bar} from "foo";

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

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

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

提前致谢。

1 个答案:

答案 0 :(得分:12)

ES6未指定模块说明符所指的内容 确实只是:一个标识符。没什么。

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

在浏览器中,<script type="module"> took some time to specify,但它终于来了。 "foo"的模块说明符当前无效,浏览器将忽略该模块,因为它不知道如何处理它。它需要解析为要加载的URL的内容。杰克阿奇博尔德wrapped it up succinctly

  

&#34;裸&#34;目前不支持导入说明符。有效的模块   说明符必须与以下之一匹配:

     
      
  • 完整的非相对网址。同样,它在放置时不会抛出错误   通过new URL(moduleSpecifier)
  •   
  • /开始。
  •   
  • ./开始。
  •   
  • ../开始。
  •   
     

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