angular - 在 Angular 中从模板中引用属性或 getter 的性能
问题描述
我有一个关于 Angular 性能的问题。引用公共属性和组件中定义的 getter 之间是否存在性能差异?
示例:
我有一个模板,它引用isActivate
了在这样的组件中定义的模板:
<div *ngIf="isActivate">Do stuff...</div>
在组件中:
export class TestComponent {
public isActivate: boolean;
但它可以有一个吸气剂:
public get isActivate(): boolean {
return true;
}
在性能方面,哪个更好,为什么?
解决方案
在每个更改检测角度比较以前和当前的界限值。getter(即函数)与属性访问之间的性能差异是什么都不function
做。如果我们想优化那个 -通过使用纯管道来记忆函数。
另一个更通用的解决方案是创建apply
管道:
@Pipe({
name: 'apply',
})
export class ApplyPipe implements PipeTransform {
transform<T, U extends any[]>(fn: (...fnArgs: U) => T, ...args: U): T {
return fn(...args);
}
}
// TS
foo = {};
computeSmth(foo){
// some computation
return 'result';
}
// HTML
{{ computeSmth | apply : foo}}
PS我们也可以使用装饰器来记忆getter函数
推荐阅读
- python - X_set[y_set == j, 0] 是什么意思?
- spring - @ContextConfiguration 和安全链过滤器
- c# - 无法加载类型“BaseClass.aspx.cs”
- terraform - 如何在 terraform 资源中创建循环?
- angular - angular 6 service worker dataGroups 不工作
- sql - SQL - 根据列值使用不同的选择语句
- node.js - 无限循环卡夫卡消费者
- java - 如何使用 Java 获得 Ubuntu 版本?
- php - S3创建空白透明webp图像
- excel - InsertBefore方法:对象不支持此方法或excel vba中的属性错误