【问题标题】:module specifier in es6 import and exportes6 导入和导出中的模块说明符
【发布时间】:2017-12-09 09:10:57
【问题描述】:

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

export {bar} from "foo";

import {bar} from "foo";

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

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

浏览器版本(和浏览器设置)已经过验证,可以与 es6 模块一起使用。

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    ES6 没有指定模块说明符所指的内容。
    确实就是这样:一个标识符。仅此而已。

    环境将这些标识符解析为实际模块。加载器可能会将它们解释为相对文件路径、全局 id、npm 模块名称等。

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

    目前不支持“Bare”导入说明符。有效模块 说明符必须匹配以下之一:

    • 完整的非相对 URL。如,放置时不会抛出错误 通过new URL(moduleSpecifier)
    • /开头。
    • ./开头。
    • ../开头。

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

    【讨论】:

    • 您对我如何找出 chrome 加载器允许模块说明符的“值”有什么提示吗?对包含对导出对象的引用的对象的引用可能被用作模块说明符似乎是合理的。
    猜你喜欢
    • 2017-06-29
    • 2019-03-07
    • 2023-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多