动态import()
在ES6+技术中和
AMD技术(requireJS库)中的
require()
有什么区别?
动态import()
在ES6+技术中和
AMD技术(requireJS库)中的require()
有什么区别?
有几个区别:
require()
是同步的,import()
是异步的(返回一个Promise)。
import
是ECMA规范中定义的关键字,而require()
只是由一些库定义的函数。
你可以在NodeJS中“本地”使用require()
,但不能在浏览器中使用,import()
则适用于所有JavaScript引擎。
如果你使用构建流程(例如Webpack),它们实际上会执行不同的操作:
require()
将所需的代码捆绑成一个包,就像import stuff
一样,而import()
在运行时动态加载模块,就像require.ensure
一样(文档)。
require()
和import()
都是异步的。 - Félix Saparellicommonjs require()
。 - oyilmaztekinimport()
可以被视为旧版AMD库(如require.js
)的官方实现。同时,它也带来了一种现代化的方法。BABEL
这样的转译器来填充EcmaScript提案,或者如果您正在处理遗留代码库并需要改善性能的AMD解决方案,那么考虑使用一些AMD库而不是动态import可能是更好的选择。
import()
和import
之间是有区别的。 - Jonas Wilms