Сухроб Хусамов: на самом деле, в приведенном примере, можно просто забить на предупреждения линтеров о том, что eval это плохо (как правило это делается специальным комментарием, см. документацию к своему IDE/линтеру).
eval плохо когда, например
Сухроб Хусамов: автозагрузка классов не нужна. Кажется, я уже это писал. Если у вас такое количество модулей, что их надо автоматом грузить, то у вас проблемы с архитектурой. А 3-5-10 require написать -- не проблема.
Сухроб Хусамов: нашел, сорри, это был чей-то еще вопрос. Тоже человек хотел, в числе прочего, autoload, вот мои доводы:
Неявные зависимости -- зло. Во-первых, труднее разбираться потом/другому человеку, что от чего зависит и где может поломаться. Во-вторых, труднее контролировать, не слишком ли разросся этот модуль. В-третьих, явное лучше неявного. Это как глобальные переменные, только еще и неявные.
Сухроб Хусамов: Нодовские приложения обычно запускаются и живут месяцами (если не годами), нет смысла что-то подгружать динамически. Архитектурно проще загрузить всё нужное сразу, при старте; динамическая подгрузка при первом запросе в таких вещах -- микрооптимизация.
Если вы хотите, чтобы они в памяти были только по требованию, то надо не только загрузку организовать, но и выгрузку, а это только лишние операции, да и из require.cache их надо будет как-то вычищать.