【问题标题】:Correct Syntax for Inline ES6 Modules?内联 ES6 模块的正确语法?
【发布时间】:2015-08-03 12:18:01
【问题描述】:

哪一个是内联模块的正确语法

<module>

<script type="module"></script>

【问题讨论】:

    标签: javascript node.js ecmascript-6


    【解决方案1】:

    <module> 是建议将 ES6 模块加载到 HTML 文档中的元素。

    <script type="module"> 是一种临时解决方法,直到:

    • <module> 得到适当的标准化
    • 浏览器开始支持<module>

    source

    【讨论】:

    • 源链接来自 2013 年。在 ES6(最终)标准中没有类似的东西。
    • @Amit:ES 根本没有指定这个。 WHATWG 正在开发加载程序。
    • @bergi - 你能分享任何相关链接吗(也许注入答案而不是那个“旧”链接?)。另外,提议的加载程序的那部分是否取代了旧提议的“System.Import”?
    • @Amit:我不是最新的,但这些应该可以帮助您入门:esdiscuss.org/topic/any-news-about-the-module-elementwhatwg.github.io/loader
    • @Bergi whatwg 是我在之前的评论中提到的那个。那里没有关于标记的内容。另一个链接(esdicuss)很有趣,但它也没有链接到任何草案/提案或类似的东西......虽然它“只有”8个月大,所以它可能仍然存在。
    【解决方案2】:

    两者都是有效的,尽管我认为<module> 稍微正确一些,请参见下面的解释:

    <script> 元素内部的代码不支持模块语法,因为元素的同步特性与模块的异步性不兼容。相反,您需要使用新的<module> 元素。与<script> 相比,它有几个显着的优势。然而,脚本可以以它的替代形式使用<script type="module">

    【讨论】:

    • 我有一个问题。为什么<module> 中的代码有自己的范围而不是全局范围?例如:<module> 标签内的变量对任何其他<module><script> 标签都不可见
    • 名字有点像,“模块”意味着它的作用域是模块,无论如何,全局作用域总是一个坏主意。
    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 2015-01-03
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-17
    • 2019-12-10
    相关资源
    最近更新 更多