Javascript Angular JS HTML中相同表达式的数量是否会影响性能?
考虑一个角度:Javascript Angular JS HTML中相同表达式的数量是否会影响性能?,javascript,html,angularjs,dom,angularjs-scope,Javascript,Html,Angularjs,Dom,Angularjs Scope,考虑一个角度: <div> <p> <span ng-if="abc.def !== 'someValue'"></span> <span ng-if="abc.def === 'someValue'"></span> </p> <ul ng-if="abc.def !== 'someValue'"> <li></li> <l
<div>
<p>
<span ng-if="abc.def !== 'someValue'"></span>
<span ng-if="abc.def === 'someValue'"></span>
</p>
<ul ng-if="abc.def !== 'someValue'">
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<div ng-if="abc.def !== 'someValue'"
ng-class="{'alternative-list': abc.def !=='someValue'}">
<div></div>
<div></div>
</div>
<div ng-class="{'class-a': abc.def !== 'someValue', 'class-b': abc.def === 'someValue'}"></div>
</div>
- 如果有更多的角度表达式执行相同的检查,是否会对性能产生不良影响李>
- 或者Angular是否预先计算,并有效地仅对所有
执行一次性解析李>ng ifs
在文档中找不到它。每次使用指令时,angular使用angular html编译器遇到它时,它将运行指令编译函数,从中取回链接函数,并调用具有作用域的链接函数。就我所知,指令之间解析的信息没有真正的共享,缓存解析/处理的值的框架中不存在这样的优化,因为解析后需要将特定的作用域应用于解析返回的函数,我不确定缓存表达式/解析有多大好处函数会有所帮助。答案是否定的 您可以在以下位置找到ng的代码: 如您所见,它为存储在
ng if
标记中的表达式添加了$scope.$watch()
。$watch
方法指的是$parse
方法,该方法将表达式存储在dictionaryexpression=>parsedExpression
中,如下所示:
这就是它与缓存相关的所有功能。您还可以在此处看到示例:
如果让其中一个执行一个函数,然后计算该函数执行的次数,你会得到一个非常清楚的答案。与往常一样,你做的工作越多,花费的时间就越长。