2014-01-08 3 views
8

Может ли кто-нибудь предоставить некоторые указатели на это?Удаляет ли большое количество модулей производительность AngularJS?

Скажем, у меня есть ряд сервисных модулей, заводских модулей и т. Д., И я пытаюсь создать большое приложение в угловом режиме, которое содержит большое количество элементов html, которые расположены под разными контроллерами.

Теперь, если я буду включать эти сервисные/заводские модули в мои контроллеры в качестве зависимостей (я добавляю их как зависимость, так как я может нужен им в любое время); может ли это повлиять на производительность моего приложения? Должны ли использоваться только используемые модули, чтобы избежать каких-либо накладных расходов?

Серфинг вокруг действительно не помог в создании четкого понимания.

+0

Запустите его на jsperf.com и поделитесь результатами. – Stewie

ответ

10

я обнаружил следующие заявления в угловых документах:

http://docs.angularjs.org/guide/module

зависимости Модулей могут содержать другие модули, как и их зависимости. В зависимости от модуля подразумевается, что необходимый модуль необходимо загрузить до загрузки модуля. Другими словами, блоки конфигурации требуемых модулей выполняются перед блоками конфигурации требуемого модуля. То же самое верно для блоков запуска. Каждый модуль может загружаться только один раз, даже если это требует несколько других модулей.

асинхронных загрузка модули представляют собой способ управления конфигурацией $ форсунки, и не имеют ничего общего с загрузкой скриптов в виртуальную машину. Существуют проекты, связанные с загрузкой скриптов, которые могут использоваться с Angular. Поскольку модули ничего не делают во время загрузки, они могут быть загружены в виртуальную машину в любом порядке, и, таким образом, загрузчики скриптов могут воспользоваться этим свойством и распараллелить процесс загрузки.

Поэтому я думаю, что если вы включаете тысячи модулей, единственным ограничением является память браузера, зарезервированная для загрузки их в среду сценария. Надеюсь, это единственное ограничение, потому что я не тратил времени на то, чтобы заглянуть в js-движок, как они на самом деле выполняют эту загрузку.

Я создал первый проект сравнения производительности. Эти тестовые примеры включают в себя ни один, 100, 1000 и 2000 модулей в модуль приложения. На данный момент я не вижу существенной разницы в производительности! jsperf

+1

Я добавил еще две версии вашего jsperf. 1: http://jsperf.com/angular-many-modules-performance-comparison/2 показывает, что на получение услуг практически нет накладных расходов. 2: http://jsperf.com/angular-many-modules-performance-comparison/3 показывает, что при создании инжектора возникают некоторые накладные расходы, что может отрицательно сказаться на времени запуска. – cemonds

Смежные вопросы