我知道從多個博客和一些問題在這裏在stackoverflow角1 ng-bind有更好的性能比{{}}插值,因爲$消化過程的工作方式。角2插值vs屬性綁定
Angular 2已經改變了它的數據綁定方式,我想知道是否有任何測試的主題。具體而言,如果這
<h1 [innerText]="obj.name"></h1>
仍比這個
<h1> {{ obj.name }} </h1>
我知道從多個博客和一些問題在這裏在stackoverflow角1 ng-bind有更好的性能比{{}}插值,因爲$消化過程的工作方式。角2插值vs屬性綁定
Angular 2已經改變了它的數據綁定方式,我想知道是否有任何測試的主題。具體而言,如果這
<h1 [innerText]="obj.name"></h1>
仍比這個
<h1> {{ obj.name }} </h1>
以getTitle()
方法爲例。 checkBinding
是調試模式檢查,可以忽略。
屬性綁定調用sanitize
和el.setAttribute
:
var currVal_0 = self.context.getTitle();
if (jit_checkBinding34(throwOnChange,self._expr_0,currVal_0)) {
self.renderer.setElementAttribute(self._el_0,'innerHTML',((self.viewUtils.sanitizer.sanitize(jit_SecurityContext36.HTML,currVal_0) == null)? null: self.viewUtils.sanitizer.sanitize(jit_SecurityContext36.HTML,currVal_0).toString()));
self._expr_0 = currVal_0;
}
插值,呼籲el.textContent = value;
:
var currVal_0 = jit_interpolate36(1,'',self.context.getTitle(),'');
if (jit_checkBinding34(throwOnChange,self._expr_0,currVal_0)) {
self.renderer.setText(self._text_1,currVal_0);
self._expr_0 = currVal_0;
}
唯一的區別是使用sanitize
,您可以檢查html_sanitizer.ts源代碼,看看是不一些複雜的東西。
更好的插補也是產權在許多情況下,結合一個方便的選擇。
實際上,在呈現視圖之前,Angular 2會將這些插值轉換爲相應的屬性綁定。
在Angular 2中,我認爲沒有技術上的理由去選擇一種形式。你應該選擇感覺最自然的形式。
因爲簡單的原因'innerText'不能更好,[它不是標準化的](https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText)。我猜想綁定'textContent'會給你帶來Universal的問題。 – estus