2017-03-20 23 views
1

我正在查看ngx-translates兩種給予翻譯輸入的方式。Angular 2不純管vs指令性能

  1. 無論是作爲一個管{{'messageId' | translate}}
  2. 或作爲指令<span [translate]="'messageId'">

管道是不純的管道,可處理翻譯和文字的任何異步加載。我看到的這種方法的缺點是,每當摘要循環運行時,都會觸發它。

另一種方法是使用指令。在這種情況下,我們可以通過使用Events或Observables來控制何時觸發這些方法。這種方法可以減少不必要的更新。

但由於指令操縱DOM,我的問題是指令的方法會讓整體變慢嗎?另外,有沒有辦法衡量一個人的表現?

回答

3

Angular插值語法上的糖是屬性綁定的。如文檔中解釋,如果你看到綁定財產性利益,去了這兩個是相同的

<p><span>"{{title}}" is the <i>interpolated</i> title.</span></p> 
<p>"<span [innerHTML]="title"></span>" is the <i>property bound</i> title.</p> 

左右。

+0

問題是,'[translate]'指令不僅僅是綁定。它仍然需要寫入DOM。 'node.textContent = this.key? node.currentValue:node.originalContent.replace(key,node.currentValue); this._ref.markForCheck();' 這是用在他們的[源代碼](https://github.com/ngx-translate/core/blob/master/src/translate.directive.ts),會這比屬性綁定慢嗎? – nipuna777

+0

我相信插值也需要像使用相同的綁定基礎結構一樣。 – Chandermani