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更加安全,因为它避免了在多个模块之间共享状态的问题。