Angularjs: ocLazyLoad vs Requirejs

Я работаю над большим проектом angluar и, очевидно, нам нужен способ ленивой загрузки наших скриптов.

Я работал с require.js раньше, и это неплохо, но проблема в том, что после того, как мы конкатенируем и минимизируем наши файлы, мы получили файл 1.5M js.

Итак, я просто столкнулся с OcLazyload, и это выглядит многообещающим, но я видел много примеров в Интернете, которые используют как require, так и ocLazyLoad, я немного путают, почему вы хотели бы использовать оба. Разве они оба не делают то же самое?

Ответы

Ответ 1

Вам нужны оба ocLazyLoad и RequireJS, потому что теперь вы имеете дело с двумя отдельными концепциями модулей - вашими модулями javascript и внутренними модулями angular.

После начальной загрузки, angularjs не позволяет больше регистрировать новые модули и компоненты, такие как директивы и контроллеры (по крайней мере, не используя стандартный способ).

RequireJS загружает только файлы javascript, но не регистрирует новые модули и компоненты angular в этом новом коде

Что делает ocLazyLoad, это позволить вам загружать ваши дополнительные файлы с помощью стороннего загрузчика модулей, такого как RequireJS, и что более важно - он регистрирует в angular новые модули и компоненты в ленивом загружаемом коде.

В заключение - вы можете лениво загружать код, используя только RequireJS, но вы не можете загружать модули и компоненты angular только с помощью RequireJS. Существует необходимость в дополнительной работе, например, выполняемой ocLazyLoad.

Ответ 2

Вы можете использовать RequireJS с ocLazyLoad, но я не рекомендую его, это просто возможно, потому что люди просили меня сделать это, и его было легко интегрировать. Вам не нужен RequireJS, потому что ocLazyLoad включает в себя свои собственные загрузчики для файлов js/css/templates и может загружать любые файлы, а не только модули angular.

Если вам нужна ленивая загрузка модулей angular, вам понадобится lib для регистрации их с помощью angular (или подождите angular 1.5, что позволит вам это сделать).

Нижняя строка: вы можете использовать RequireJS с ocLazyLoad или просто ocLazyLoad (рекомендуется), но вы не можете использовать только RequireJS