CommonJs、ESModule

89 阅读1分钟

CommonJS

require()函数来引入模块,使用module.exports来导出模块。CommonJS模块是同步加载的,也就是说,当一个模块被引入时,它会立即执行模块中的代码,并且将模块的exports对象返回给调用方。

ESModule

用import语句来引入模块,使用export语句来导出模块。ES Module是异步加载的,也就是说,当一个模块被引入时,它不会立即执行模块中的代码,而是在需要时才会执行。

区别

在CommonJS中,使用module.exports来导出模块,使用require()函数来引入模块。当一个模块被引入时,它会执行模块中的代码,并将模块的exports对象返回给调用方。在模块中,可以直接修改exports对象的属性或方法,这样就可以导出一个对象或函数。

在ES Module中,使用export语句来导出模块,使用import语句来引入模块。ES Module导出的是一个值的引用,而不是一个对象的引用。这意味着,如果在模块中修改导出的值,那么在引入该模块的地方也会受到影响。因此,ES Module更加安全,因为它避免了在多个模块之间共享状态的问题。

zhuanlan.zhihu.com/p/512292465