Предположим, есть задача: отправлять ajax запрос с определенными данными через определенные промежутки времени.
Данные формируются на клиентской стороне. След-но, есть соотв. js код, обрабатывающий все нужные штуки.
Но вот незадача: по сути, решением задачи занимается один файл (назовем его main.js), и в нем хранится ну просто всё: Функции, обрабатывающие данные, функции, отвечающие за таймер, функция, посылающая запрос...
Хочется какой-то модульности. Но как это сделать? Нельзя же в js написать что-то типа require "чего-то там".
Есть require.js, есть commonjs, есть es6-модули (это новый стандарт, а сейчас можно babel'ом компилировать и полифилы использовать), есть модули typescript, есть coffescript-модули. Отдельные фреймворки (например, angular) имеют свои системы модулей.
Лично я использую requirejs на работе. Довольно удобная штука для тех, кто не может использовать es6. Осваивается минут за 10-15, в инете полно инфы.