1、(这是我们常用的)省略或 JavaScript MIME 类型:这表明脚本是 JavaScript。 HTML5 规范敦促作者省略该属性,而不是提供多余的 MIME 类型。在早期的浏览器中,这标识了嵌入或导入(通过 src 属性)代码的脚本语言。 JavaScript MIME 类型在规范中列出。
一些常用的值:
text/javascript (默认)
text/ecmascript
application/ecmascript
application/javascript
text/vbscript
2、type = module
模块:使代码被视为 JavaScript 模块。脚本内容的处理不受 charset 和 defer 属性的影响。有关使用模块的信息,请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules。与经典脚本不同,模块脚本需要使用 CORS 协议进行跨域抓取。
模块背景
JavaScript 程序开始时非常小——它在早期的大部分用途是执行独立的脚本任务,在需要时为您的网页提供一点交互性,因此通常不需要大型脚本。快进几年,我们现在已经在浏览器中运行了完整的应用程序,其中包含大量 JavaScript,以及在其他上下文中使用的 JavaScript(例如 Node.js)。
因此,近年来开始考虑提供将 JavaScript 程序拆分为可在需要时导入的单独模块的机制是有意义的。 Node.js 长期以来一直具有这种能力,并且有许多 JavaScript 库和框架支持模块使用(例如,其他基于 CommonJS 和 AMD 的模块系统,如 RequireJS,以及最近的 Webpack 和 Babel)。
现在浏览器已经开始原生支持模块功能,浏览器可以优化模块的加载,使其比使用库和执行所有额外的客户端处理和额外的往返更有效。