2017-06-16 47 views
3

我在想哪一個更快ng-if或ng-switch?假設我們有一個案例:一次只需要10個不同的div並且只需要一個div。如果使用ng-switch而不是ng-if,速度是否有差異?Angular ng-if vs ng-switch性能

如果使用ng-if,所有元素將單獨評估,但ng-switch是否也一樣?

使用角度的1.x

+0

10 divs ?!這是[過早優化]的定義(https://softwareengineering.stackexchange.com/questions/80084/is-premature-optimization-really-the-root-of-all-evil)。你應該更關心哪一個最好讀* * [任何傻瓜都可以編寫計算機可以理解的代碼。好的程序員編寫人類可以理解的代碼。](https://en.wikiquote.org/wiki/Martin_Fowler)* – Liam

+2

我認爲'ng-switch'的性能稍好一點,因爲它很可能並不是所有的值都是匹配。因爲在angularjs中不可能創建一個* if/else if/else if/else if *子句,所有條件總是被評估。除此之外,'ng-if'和'ng-switch'在作用域等方面表現非常一致。 –

+1

@Liam顯然這不是我的全部用例。我只是簡化了它的問題。我有可能有數千個元素的中繼器,這些元素中的每一個都包含這種情況。我並不期望有任何大規模的業績增長。我想知道哪個更好。 – Firze

回答

4

NG-如果是NG-開關本身,所不同的只是這裏NG-如果僅具有單一的表達。

所以如果你只有一個表達式,最好使用ng-if,否則使用ng-switch。這是你使用它們時唯一需要考慮的事情。

3

ng-if和ng-switch都創建自己的作用域。所以在這一點上,沒有區別。

最後,我認爲它很大程度上取決於用例。

如果您只有幾個元素,那麼使用ng-switch變體可能會更好,因爲正如我的評論中所示,ng-switch有很好的機會避免匹配所有可能的值,因爲它在angularjs中是不可能的創建一個if/else if/else if/else if子句。使用ng-if,總是評估所有條件。

由於NG-展葉在DOM活着的元素(對比ng-if),這意味着所有的監視表達式和性能成本仍然存在,即使用戶不看風景在所有。在非常大的意見中,這可能會帶來懲罰。