代码之家  ›  专栏  ›  技术社区  ›  lovechillcool

JavaScript类型模块不执行

  •  0
  • lovechillcool  · 技术社区  · 6 年前

    我有以下html文件:

    <!DOCTYPE html> 
    <html lang="en"> 
    
    <head> 
    
    </head> 
    
    <body> 
    
        <script type="module">
            console.log("test");
        </script>
    
    </body>
    </html>
    

    type="module" ,效果很好。 我使用的Chrome版本是58.0.3029.81。 我还搜索并测试了我当前的Chrome支持ES6。

    知道为什么吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Wayne    6 年前

    版本58不支持它。 https://caniuse.com/#search=type%3D%22module%22

    但你可以用 nomodule 与之兼容。

    这是一个 html.spec.whatwg.org 的例子

    <script type="module" src="app.mjs"></script>
    <script nomodule defer src="classic-app-bundle.js"></script>
    

    在支持模块脚本的现代用户代理中,具有nomodule属性的脚本元素将被忽略,而具有“module”类型的脚本元素将被获取和计算(作为模块脚本)。相反,较老的用户代理将忽略类型为“module”的脚本元素,因为这是他们未知的脚本类型,但是他们不会有问题获取和计算另一个脚本元素(作为经典脚本),因为他们不实现nomodule属性。

    意思是在61版以上 type=module 支持,则:

    1. 脚本将在类型为“module”的脚本元素中执行。
    2. 脚本将不会在属性为“nomodule”的脚本元素中执行。

    低于60版 类型=模块 诺模组

    1. 脚本不会在类型为“module”的脚本元素中执行,因为 类型=模块 是浏览器的未知脚本类型。
    2. 脚本将在属性为“nomodule”的脚本元素中执行,因为浏览器没有实现“nomodule”属性。

    希望能对你有所帮助。