mport 命令会被 JavaScript 引擎静态分析,先于模块内的其他语句执行(import 命令叫做 连接)。因此,下面的代码会报错。
// Error
if (x === 2) {
import module from './module';
}
⚠️ 注意:引擎处理 import 语句是在编译阶段,这时并不会去分析或执行 if 语句,所以 import 语句放在 if 代码块之中毫无意义,因此会报句法错误,而不是执行时错误。也就是说,import 和 export 命令只能在模块的顶层,不能在代码块之中。
如此的设计,固然有利于编译器提高效率,但也导致无法在运行时加载模块。在语法上,条件加载就不可能实现。如果 import 命令要取代 Node 的 require 方法,这就形成了一个障碍。因为 require 是运行时加载模块,import 命令无法取代 require 的 动态加载功能
在普通的层面的前端的项目中的时候,我们一般对于项目的要求需要对应的项目中使用的webpack的版本的需要在4或者以上,