Как понять, что код на яваскрипте пора усложнить асинхронными модулями (RequireJS, ...)?
В какой-то момент введение новой абстракции усложняет код меньше, чем если продолжать писать по-старому.
Некий триггер должен срабатывать у программиста. Типа, пишу-пишу, до этого было норм, но вот я добавил строк и теперь уже хватит усложнять и дублировать, выделю кусок в метод. От простого к сложному. Не вводить новые сущности раньше необходимости.
Асинхронные модули (AMD), такие как RequireJS помогают организовывать код в яваскрипте. Но когда должен сработать триггер, что систему пора ими усложнить?
Да как бы... всегда можно. Если ваш код можно разбить на модули/компоненты, то это то самое время. Это не абстракция, это система модулей. В продакшен обычно собранный вариант выкладывают (r.js какой или browserify). Грядет ES6 со своей системой модулей поддерживаемой браузерами из коробки.