如果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;
}
-
对于需要引入模块的
<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类型,否则会报错