更多的 HTML 属性或值会损害 Angular 的性能吗?

Posted

技术标签:

【中文标题】更多的 HTML 属性或值会损害 Angular 的性能吗?【英文标题】:Can more HTML attributes or values hurt Angular performance? 【发布时间】:2017-01-19 01:01:57 【问题描述】:

如果有p这样的:

<p ng-repeat="text in texts">text</p>

p 添加更多类是否会在渲染 html 时损害 Angular 性能?例如这段代码:

<p ng-repeat="text in texts" class="normal par red small italic">text</p>

如果它引起了性能问题,它真的值得注意吗?

【问题讨论】:

考虑到 Angular 本身 已经有多少包袱,我无法想象仅仅添加一两个属性可能会使它更加变得更糟。 我猜这没什么区别,Angular 只是使用模板中给出的字符串值创建类属性。 您的问题太笼统,无法回答。这取决于。如果您有 1000 个文本并使用一个使用例如的类你可能不想在 IE 中查看它。在你的情况下,添加一个普通的类属性甚至不会触发让角度工作更多的东西。使用像ngClass这样的角度指令并依赖changeDetection,那是另一个故事...... @Mina, Salam,chetori? 【参考方案1】:

首先,您可以在 ng-repeat 中调整的一个方面是唯一键:Angular 会自动将 $$hashKey 属性添加到数组中的每个对象。

您可以添加track by 来提高循环的性能。

那么,如果只是为了添加类,也可以。但是,如果您有大量文本并且您愿意在每个元素上添加指令(例如:ng-click),那么您可能会观察到一些缓慢的渲染。

【讨论】:

【参考方案2】:

在您的示例中,类只是一些字符串,仅此而已。 Angular 甚至不需要考虑它。如果有成本,它在浏览器端,它应该编译你的类并分配样式。

因为我可以邀请您添加类的原因,我认为拥有更多类也比分层 CSS 样式更好,因为它需要更少的 DOM 查询和操作。

没关系。但是,基准测试仍然会导致您遇到一些更复杂的问题。那就试试吧。

【讨论】:

以上是关于更多的 HTML 属性或值会损害 Angular 的性能吗?的主要内容,如果未能解决你的问题,请参考以下文章

用[(NgModel)]更改绑定的Angular表中的值会影响其他字段

Angular 2 Architecture Overview

包含属性或值的 json 对象的路径

Cloud Functions 错误:函数返回未定义、预期的 Promise 或值,以及 TypeError:无法读取未定义的属性“First_Name”

什么是json

更改XML属性的值会删除其他属性