import关键字和import()函数都能导入模块,主要区别如下:
加载时机
- import 关键字导入的内容,在编译阶段加载,编译阶段确定模块之间的依赖关系,所以 import 利于 tree shaking
- import() 函数导入的内容,在运行时加载,这就是按需加载的原理。
声明地方
- import 关键字只能放在模块的顶层;在浏览器中,只能在
<script type="module"></script>中使用 - import() 函数可以放在代码逻辑的各个地方,使用更灵活
使用方式
- import 关键字直接使用
- import() 函数:
- import() 函数的参数是目标模块的文件路径
- import() 函数返回一个 Promise,所以它是异步的,故可用于代码分割;用 then、catch处理成功和失败
- then() 的回调参数 res ,其实就是其他模块A导出的所有内容;如果模块A没有导出某些变量,即使使用 import() 函数,也无法访问到;如果模块A采用默认导出,则必须使用
res.default才能获取内容