Dynamic import() VS Static import()

1,350 阅读1分钟
  • 静态import

    • 它只接受字符串文字作为模块说明符,并通过运行前链接过程将绑定引入本地范围;
    • 静态导入语法只能在文件的顶层使用;
    • 对于tree-shaking 、静态分析来说静态import是非常有用的;
  • 动态import (返回promise)

    • 按需加载模块
    • 在运行时实时计算模块
    • 从常规脚本中引入模块
    <script type="module">
      const moduleSpecifier = './utils.mjs';
      import(moduleSpecifier)
        .then((module) => {
          module.default();
          // → logs 'Hi from the default export!'
          module.doStuff();
          // → logs 'Doing stuff…'
        });
    </script>
    <script type="module">
      (async () => {
        const moduleSpecifier = './utils.mjs';
        const module = await import(moduleSpecifier)
        module.default();
        // → logs 'Hi from the default export!'
        module.doStuff();
        // → logs 'Doing stuff…'
      })();
    </script>
    

    来源:v8.dev/features/dy…