ES6动态Import()与AMD require()

时间:2019-04-07 15:50:26

标签: javascript ecmascript-6 requirejs amd

之间有什么区别

    ES6 +技术和

    中的
  • 动态import()

  • require()是AMD技术(requireJS库)中的吗?

2 个答案:

答案 0 :(得分:0)

有一些区别:

require()是同步的,import()是异步的(返回一个承诺)。

import是ECMA规范中定义的关键字,require()只是某些库定义的功能。

您可以在NodeJS而非浏览器中“本地”使用require(),并且为所有JavaScript引擎指定import()

现在,如果您使用建筑管道(例如Webpack),它们实际上会做不同的事情:

require()会将所需的代码打包为一捆,就像import stuff一样,而import()则在运行时动态加载模块,就像require.ensure那样({{ 3}})

答案 1 :(得分:0)

有些差异,但是import()可以被视为旧版 AMD库(例如require.js)的正式实现。而且,它带来了一种现代化的方法。

传统AMD的不言而喻的功能是,除了导入表达式外,它还带有模块定义。这意味着您可以定义一个模块,该模块可以异步导入项目中的任何位置。

如果您没有像BABEL这样的编译器来在项目中多填充EcmaScript提案,或者您使用的是旧代码库,并且需要AMD解决方案来提高性能,请考虑使用某些AMD库而不是动态库导入可能是更好的选择。