RequireJS solved 1 and 3 over a decade ago and better than ESM.
2) ESM syntax is objectively more complicated than CJS while managing to be less expressive. It's one of the most complicated module syntaxes out there. Subjectively it's not nice at all, much due to the objective difference.
Yes. This is exactly what I want. It's helpful for simple apps, and without all the toolchain complexity more apps can be simple.
ES modules solve the problems I care about:
1) Eliminating the extra roundtrips.
2) Nice and simple syntax.
3) Tooling not required.