浏览器原生Esmodule

93 阅读1分钟

如果script中添加type="module",代码就会被当作JavaScript模块,并以模块的方式去加载、执行

<script type="module">
  // 导入firstBlood模块
  import { pColor } from './firstBlood.mjs';
  // 设置颜色为红色
  pColor('red');
</script>
// export一个改变<p>元素颜色的方法
export function pColor (color) {
  const p = document.querySelector('p');
  p.style.color = color;
}

image.png

  • 对于需要引入模块的<script>元素,我们需要添加type="module",这个时候,浏览器会把这段内联script或者外链script认为是ECMAScript模块。

  • 模块JS文件,业界或者官方约定俗成命名为.mjs文件格式,一来可以和普通JavaScript文件(.js后缀)进行区分,一看就知道是模块文件;二来Node.js中ES6的模块化特性只支持.mjs后缀的脚本,可以和Node.js保持一致。当然,我们直接使用.js作为模块JS文件的后缀也是可以的。

在浏览器侧进行import模块引入,其对模块JS文件的mime type要求非常严格,务必和JS文件一致。这就导致,如果我们使用.mjs文件格式,则需要在服务器配置mime type类型,否则会报错

转载自: 万岁,浏览器原生支持ES6 export和import模块了