https://blog.leoho.dev/posts/javascript-module-systems-comprehensive-guide/