我们有一个组件,我们使用ngIf根据条件显示或隐藏组件。我们可以用两种方式做到这一点..
1)*ngIf="a == b"......
2)*ngIf="checkforequivalence()".....
这些实施有什么不同吗?我主要关注的是哪些是更好的实施性能?是否会出现我们需要一个在另一个上面的情况?
答案 0 :(得分:1)
Angular模糊了什么是html和什么是javascript之间的界限。这一切都通过一个编译器,所以我严重怀疑从某种方式做到这一点会有任何性能提升,如果有的话,它将是几分之一毫秒。
真的,在你包含逻辑的地方取决于你。在这种情况下使用ngIf对我来说,使用你的选项1是有意义的,只是因为当有人来阅读你的代码时,它会在那里为他们拼写,他们不必去寻找其他一些功能。
话虽如此,(为了解决标题中更一般的问题)当我尝试在html中使用复杂的逻辑和函数时,我遇到了问题。我想我正在尝试用onClick做一些事情并在html中声明工作,但它没有用。但是当我将它包装在一个函数中并将其移动到我的javascript页面时,它运行正常。
<强> TL; DR 强>
性能改进可以忽略不计,请选择代码可读性和可维护性的第一个选项
答案 1 :(得分:1)
简短回答:在你的例子中没有区别。
答案很长:通常你可以说角度应用的性能取决于digest
周期时间 - 每个摘要都会评估ng-if
中的所有表达式。评估所需的时间,即a == b
,a != 1 && b == c
是一个小常数,对于阅读/修改代码的人来说很明显,但评估foo(a, b)
所需的时间取决于该函数。因此,最好不要在这些地方使用功能。 (当然,你的意思是在ng-click,ng-enter等指令中使用函数)