commonjs和esm的底层区别是什么?