我目前正在使用Angular动画。因此,我找到了两种将动画附加到组件的可能方法。以下是我将它们描述为状态/转换动画和查询动画。
在这个问题中,我主要想知道选择哪一种方式是否有性能差异!?
1. 状态/转换动画
.html
<div [@animation_foo]/>
.ts
trigger('animation_foo', [
state('true', style({...}),
state('false', style({...})
transition('true => false', animate(...)
]
2. 查询动画
.html
<div [@animation_foo]>
<div class="bar"/>
</div>
.ts
trigger('animation_foo', [
query('.bar', style({...}), animate('10ms', style({...}))
]
进一步思考:
- 我对第2点“查询”最主要的担忧是:
- 如果您不止有一个查询,而是多个查询通过group(...)组合,并且css选择器将在更深层次('.foo > :nth-child(n+3) .bar')上查找元素,则必须迭代整个DOM树的很大一部分。
- 应用于元素的样式和动画发生在找到元素之后并在动画之前 - 每次都会发生 - 因为我期望编译器无法预编译它?
环境/目标平台: 我知道这可能与普通的Web应用程序无关,但我尝试考虑具有多个路由器、嵌套组件和大量ngIf's ngFors的大型企业应用程序,因此我个人认为查询所有这些可能需要一些努力。
浏览器: 我知道不同的浏览器行为不同。就我而言,我目前仅对Chrome感兴趣 - 但出于社区的考虑,一个通用的答案将是令人敬畏的。
如果您有任何其他重要的信息需要注意,分享一下会很好(错误等)