В статье
http://habrahabr.ru/post/145269/ про загрузку и инициализацию js были показаны различные попытки ускорить загрузку приложения на медленном интернете (7кб/c).
Например, сначала просто загрузили скрипты последовательно/параллельно, затем попытались сконкатенировать все и минифицировать, -> запросов стало меньше, скорость улучшили, затем
решили использовать require.js, из статьи:
Цитата:
|
1. Грузим основные части
2. Остальное по необходимости
3. Автодогрузка зависимостей
|
То есть загрузили основную часть, остальное по требованию, не смотря на то что запросов больше, основная часть загрузится быстрее.
Это случай, когда мне понятно, зачем использовать require.js.
Но мне не совсем понятны преимущества его использования если мы, например, просто загружаем все скрипты сразу, и не используем асинхронную подгрузку по требованию(но нажатию на кнопку например), нам этого не надо.
То есть "обычный" случай:
Наши скрипты, подгружаются все сразу
<script src="dep-for-module-A.js"></script>
<script src="dep2-for-module-A.js"></script>
<script src="moduleA.js"></script>
<script src="dep-for-module-B.js"></script>
<script src="dep2-for-module-B.js"></script>
<script src="module-B.js"></script>
<script src="main.js"></script>
Мы не можем здесь разместить модуль A над модулем dep-for-module-A, из за зависимостей, поэтому порядок нужно соблюдать.
Сами модули что-то вроде этого:
( function( global ) {
var dep1 = global.depA1;
var dep2 = global.depA2;
function ModuleA() {
// ...
}
// export
global.ModuleA = ModuleA;
})( this );
Ну и соответственно в продакшне мы это все конкатенируем-минифицируем, в девелопменте оставляем как есть.
Для чего в таком случае(когда нет подгрузки скриптов по требованию) использовать require.js, и нужно ли?
1. Как я понял одна из причин - когда js файлов становится слишком много, чтобы не париться и не следить какой расположить выше другого.
2.Второе - не засоряется глобальное пространство имен (Require.js вроде как способствует этому).
3.Вроде как хороший встроенный оптимизатор для склейки/минификации файлов.