Подтвердить что ты не робот

Как Angularjs обрабатывает управление памятью с помощью ngView?

Когда вы используете ngView, скажем, 100 разных представлений, каждая с другой областью. Angular автоматически обрабатывает уничтожение старых шаблонов/областей или они остаются в памяти? Мне просто интересно, если Angular обрабатывает это сам, прежде чем я пойду и начну писать собственный код, чтобы уменьшить нагрузку на память. На данный момент каждый новый вид я просто кладу в память.

Это конкретный вопрос AngularJS. Я знаю, как сборка мусора работает в javascript.

4b9b3361

Ответ 1

Одним из проектных решений, связанных с внедрением областей, было упрощение управления памятью. Разделив пространство модели на части (области), мы можем удалить ненужные части модели (области) и добавить новые, когда это необходимо. Итак, да, области являются важной частью всей головоломки управления памятью.

Когда речь заходит о вашем конкретном вопросе о ng-view - эта директива будет содержать область действия только для текущего активного представления. ng-view является одной из директив создания области (и масштаба)! Он автоматически создаст новую область при переходе к новому представлению и автоматически уничтожит область, связанную со старым представлением. Это легко проверить в исходном коде AngularJS .

Единственная часть памяти, которую нужно учитывать, - это шаблоны, полученные по сети. Все шаблоны, указанные в маршруте, кэшируются в $templateCache. Вы можете вырезать шаблоны, используя экономно, если вы определите, что он решает конкретное узкое место в вашем приложении. Нам просто нужно понять, что это время торговли (время сети) для потребления памяти.

Вкратце: нет необходимости развертывать собственное управление областью для ng-view - если вы видите какое-либо сохранение области, оно должно быть сообщено как ошибка.