区别一:
module属于编译时加载,也就是静态加载,在编译时就能确定模块的依赖关系,以及输入和输出的变量;commonjs属于运行时加载,只有代码在运行时才能确定这些东西。
区别二:
module可以做到tree-shaking,也就是可以加载模块部分用到的内容,commonjs需要加载整个模块,再取内容。
区别三:
module输出的是值的引用,commonjs输出的是值的拷贝。
区别四:
module中的this是指 undefined,commonjs的this是指的是当前模块
区别五:
module中的import是异步加载,commonjs中的require是同步加载
借鉴的文章:
https://www.cnblogs.com/Happymoney/p/14028324.html
https://zhuanlan.zhihu.com/p/71098263