2013-05-18 1 views
8

Я могу использовать ng-include для включения частичного внутри углового вида, или я могу использовать частичные части сервера, чтобы сделать это на сервере. Я думаю об использовании частичных частей на стороне сервера вместо угловых частей, а затем ng-include (с тегом скрипта), потому что я где-то читал, что угловые частичные создают новые области, и это может повредить производительность в $ digest.angularjs/rendering Разница в производительности между встраиванием или использованием ng-include

Есть ли какое-либо юридическое значение для этого. Каково влияние на производительность при использовании угловых включений.

ответ

9

ng-include создаст новую область действия и зарегистрирует часы (в выражении пути, используемом ng-include) в области, где используется ng-include. Хотя это требует некоторой дополнительной обработки, это все еще JavaScript-объекты, основанные и, как таковые, очень быстрые. Эффект новых часов плюс дополнительный охват в большинстве случаев должен быть совершенно незначительным.

Единственное реальное различие, которое я вижу, заключается в том, что ng-include будет включать/отображать частичное асинхронно, так что вы можете увидеть небольшую задержку, особенно при получении частичных данных по сети (но это можно смягчить с помощью предварительных нагрузок, описано здесь: https://stackoverflow.com/a/12346901/1418796)

Короче говоря: в большинстве случаев эффект ng-include должен быть незначительным, если парциальные предварительно загружены.

Последний комментарий: «преждевременная оптимизация - корень всех злых». Не начинайте настройку micr-performance до тех пор, пока вы не измерите производительность вашего приложения и не определите, что ng-include является узким местом.

+2

С другой стороны, ng-include (s) внутри ng-repeat (s) начнется очень быстро, чтобы показать большие ухудшения производительности из-за асинхронного mecanism. Лучшая оптимизация, которую я сделал в моем приложении angularJS, заключалась в создании директивы ng-include-cache (синхронно при нажатии на кеш). – Guillaume86

+0

@ Guillaume86: Вы хотите поделиться исходным кодом для этой директивы? Мне было бы очень интересно. – paldepind

+1

@paldepind вот он: https://gist.github.com/guillaume86/9272837, но вы, вероятно, захотите написать новый с последним кодом ngInclude из последней угловой версии. Шахта использовала старый 1.0.x в качестве базы. – Guillaume86