Ну вообще в современных условиях модульность лучше реализовывать каким-то более пригодным для этого инструментом - например, Вебпаком.
В принципе, твой подход ничего плохого в себе не несёт. Функционал у тебя расфасован по отдельным файлам в замыканиях, таким образом глобальная область видимости остается чистой.