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(_ => ...)