阿潮 课程里面使用 commonJS 是因为考虑到 nestjs 暂时只支持 commonJS,课程代码的基础框架又是使用 nestjs,所以以 nestjs 的支持方式为主(如果使用 esm 为默认模块系统,很多涉及 nestjs 导包的地方都需要专门处理,会比较麻烦)。不过现在有些包已经使用了较新的 esm,在以 commonJS 为模块系统的条件下,要不就使用 await import('xxx') 引入 esm 的包,要不就使用该第三方包较早使用 commonJS 的版本。我理解大概是这样的。
如果你自己编写项目的话,就看项目的基础框架是什么,如果支持 esm 你也可以考虑使用 esm 作为项目的模块系统,不过其他只支持 commonJS 的包的导入就需要专门处理。