ESM规范和浏览器

116 阅读1分钟

esm规范即EcmaScript module,es6提出的“一个文件一个模块”。在es6引入了模块概念之后,浏览器也开始逐步接受引用esmodule了,这也是vite等工具能产生的原因。 1、ES6模块导入使用import...from...,{}里存放导入的方法 2、可以一起导入,也可以分开导入 3、named as myName中的as为重命名 4、import * as mylib from 'src/lib' 把模块里定义导出的所有方法,绑定到mylib对象上 5、import 'src/mylib'代表只是把文件模块加载进来,没有调用相关方法

浏览器的esm

现在的主流浏览器,在2019年之后,基本也都支持esm了,例如,我们可以直接在浏览器上运行如下代码

const lodash = await import('https://cdn.skypack.dev/lodash')

这就是浏览器的http import,也叫native import。

importMap

但是上面的import每次都需要输入url,不太方便。所以,此处有一个 importMap,能使得裸导入变成正常。

<script type="importmap">
{
  "imports": {
    "lodash": "https://cdn.sykpack.dev/lodash",
    "ms": "https://cdn.sykpack.dev/ms"
  }
}
</script>
// 引入上述之后就可以正常再使用裸导入了
import lodash from 'lodash'
import("lodash").then(_ => ...)

参考: ES6模块化规范之ESM 三分钟了解浏览器中的 ESM