#javascript #angularjs
#javascript #angularjs
Вопрос:
у нас есть компонент, в котором мы используем ngIf для отображения или скрытия компонента на основе условия. Мы можем сделать это двумя способами .. 1) *ngIf="a == b"......
2) *ngIf="checkforequivalence()".....
Есть ли какая-либо разница в этих реализациях? Мое основное внимание уделяется тому, какой из них является лучшим с точки зрения производительности реализации? и будут ли ситуации, когда нам нужно одно поверх другого?
Комментарии:
1. Я думаю, что производительность с точки зрения производительности почти одинакова, но если вы используете функцию, у вас есть преимущества в том, что вы можете делать более сложные вещи внутри нее.
Ответ №1:
Angular размывает границы между тем, что такое html и что такое javascript. Все это проходит через компилятор, поэтому я серьезно сомневаюсь, что от этого так или иначе будет какой-либо прирост производительности, если он и есть, то это будут доли миллисекунд.
На самом деле это зависит от вас, где вы включаете логику. В этом случае с ngIf для меня имело бы смысл выбрать ваш вариант 1, просто потому, что, когда кто-то придет, чтобы прочитать ваш код, он будет прописан прямо там для них, и им не придется искать какую-то другую функцию.
При этом (для решения более общего вопроса в названии) Я столкнулся с проблемами, когда попытался использовать сложную логику и функции прямо внутри html. Я думаю, что я пытался что-то сделать с помощью onClick и объявлял работу прямо там, в html, и это не сработало. Но когда я обернул это в функцию и перенес на свою страницу javascript, она работала нормально.
TL; DR
Улучшения производительности незначительны, используйте свой первый вариант для удобства чтения и обслуживания кода
Ответ №2:
Короткий ответ: в вашем примере разницы нет.
Длинный ответ: Обычно можно сказать, что производительность приложения angular зависит от digest
времени цикла — все выражения в ng-if
вычисляются при каждом дайджесте. Время, необходимое для оценки, т.Е. a == b
a != 1 amp;amp; b == c
Является некоторой небольшой константой, и это очевидно для того, кто читает / изменяет ваш код, но время, необходимое для оценки foo(a, b)
, зависит от этой функции. Поэтому рекомендуется вообще не использовать функции в таких местах. (Вы, конечно, имели в виду использовать функции в директивах ng-click, ng-enter и т. Д.)