首页 > 解决方案 > 模板上的只读函数会减慢角度吗?

问题描述

假设我有以下模板

<div>{{myvalue.ID}}</div>

我可以使用提供 ID

   public ID: string;

或者

   get ID() {
      return this._ID;
   }

甚至做类似的事情

<div>{{myvalue.getID()}}</div>

readonly getID= (): string => this.ID;

这实际上看起来像一个得到。

我的问题是,比较给出直接变量引用,get 和 readonly 函数是否会减慢角度?

我有一些变量想显示给用户,但要保密,因为我不希望任何人修改它们(在代码和模板中)。我相信没有其他方法可以这样做,但是它会影响性能吗?

标签: angular

解决方案


使用函数来绑定引用并不是好的设计。

造成这种情况的几个原因是:

  • 每次运行角度变化检测 (CD) 时都会创建对该函数的新引用。由于一旦返回,函数引用就是 GC。
  • 此外,每次 CD 运行时都会调用该函数。对于简单的 getter/setter 函数来说,这似乎并不多。但如果函数具有更复杂的实现,则可能会产生重大影响。最终使CD变得沉重
  • 插值语法之间的任何代码都由 Angular 评估,这会导致 CD 周期的函数调用。

推荐阅读