Questo è specifico per JS nel browser per un sito multipagina tradizionale (vale a dire non un'app a pagina singola).
Per le app a pagina singola, i vantaggi sono piuttosto chiari: la pagina di visualizzazione principale sarà di lunga durata e caricherà qualsiasi numero di sottoview che potrebbero avere tutte dipendenze JS diverse. Caricare tutto il tuo JS in primo piano non è l'ideale per qualcosa di non banale, quindi avere dichiarazioni di dipendenza strutturate esplicite e utilizzare un caricatore di script asincrono sembra la strada da percorrere.
Tuttavia, per un design più tradizionale a più pagine, in cui ogni pagina è una pagina HTML completa e separata, non vedo il vantaggio. In questo design tutte le dipendenze JS sono note al caricamento della pagina. Quindi idealmente li metterei tutti insieme in un unico script sul lato server e scaricarlo in un colpo solo - caricare moduli separati con richieste separate sarebbe un male per le prestazioni.
Quindi, quando garantisci che tutti i moduli JS necessari sono presenti sul caricamento della pagina, non vedo la necessità di qualcosa come AMD. Puoi utilizzare il modello di modulo per creare moduli: puoi utilizzare oggetti semplici per creare spazi dei nomi . C'è qualcosa che mi manca?