2011-12-31 63 views
7

在性能方面,Ext.get()document.getElementById()之間有什麼區別? Ext.get()會更慢,因爲它可能會在內部呼叫document.getElementById()?或者是否有使用Ext.get()的特定優勢?哪一個更好 - Ext.get()或document.getElementById()

+0

'的document.getElementById()== Ext.get()。dom' – Jaider 2013-06-06 18:14:31

回答

15

Ext.get getElementById的主要優點是返回給你一個Ext.Element實例。這種情況下,不僅包含了DOM節點引用,的getElementById會給你,但也顯著其擴展 - 提供一套方便的方法,活動正常化,和熨燙出來的跨瀏覽器的差異。

表面上的getElementById可能只是少了一個功能,讓相同的基本DOM調用之前的基礎上,在Ext.get一些微不足道的速度增益。但是,就整體性能而言,在檢索後對元素所做的操作可能比檢索本身具有更多的影響。手頭上的Ext.Element包裝可能證明是相當有益的。

你可能想看看Ext.fly爲好。這個方法與Ext.get類似,只是它返回給你一個單例Ext.Element實例。這不會是什麼好,如果你需要存儲供以後使用的元素,但如果你正在做簡單的,對獨特的DOM節點一次性的操作可能比Ext.get便宜。

3

document.getElementById()是原生的JavaScript,因此將快於Ext.get()

現在爲什麼Ext.get()有可言,

document.getElementById()返回一個DOM元素,而Ext.get()返回Ext對象,它是容易對鏈接的目的。

這也是爲什麼jQuery有$("#elm_id")。請注意,Ext.get()也更容易輸入:)

3

Ext.get()允許使用字符串ID,現有的HTMLElement或Ext.Element - 因此它更靈活一點。 document.getElementById()只接受字符串ID。

也就是說,如果它符合您的需求,我只需使用document.getElementById()。它本身就是瀏覽器,應該會更快一些 - 而且更不用說你用自己的鏈接來鏈接到一個特定的JavaScript框架。

0

我對Ext庫不熟悉,但是使用vanilla Javascript,只有少數幾種方法來獲取特定的元素;你可以通過它的ID來獲得它,在通過標籤名獲得所有元素後進行搜索(這是JQuery通過類名獲得元素的方式,我相信),或者,對於HTML5來說,通過類名獲取元素。如果你有創意,還有其他幾種方法;) 只要通過ID獲取它就是最快的,假設你沒有保存本地參考。

因此,如果你所要做的只是獲取一個元素而不用做任何Ext.js通過該函數調用,那麼vanilla Javascript會更快。

3

就性能而言,原生JS函數總是會更快。

不過,我不是說不能用JS庫,他們是偉大的,因爲他們:

  • 編寫代碼
  • 時減少時間它使你的代碼更易讀
  • 你少寫代碼(減少文件大小和下載時間)

最後,也許你甚至可以節省時間,因爲更少的代碼意味着更快的下載速度,在某些情況下甚至可能會超過性能。因爲一方面你可以節省時間(「document.getElementById()」),另一方面可以減少文件大小和下載時間(「Ext 。得到()」)。

您可以同時使用和不應有任何明顯的差異。

1

由於其他人不知道這裏使用的方法取決於需要,如果你只是想獲得一個非ext目的的dom元素的引用,你可以使用本地函數,但如果你打算執行動作在Ext上下文中返回的對象上,那麼Ext.get會返回給你一個Element引用,它提供了額外的方法。

Ext.get是Ext.ComponentManager.get的簡寫,雖然它是對庫函數的調用,效率可能較低,但應該注意的是Ext.Element上有大約180個方法可用,所以如果您需要這些可能值得包括包裝調用。

正如owlness所提到的,當你需要在一個元素上執行單個函數時,Ext.fly()就被設計出來了,例如。 Ext.fly("myDiv").hide();而Ext.get()當你需要一個機會到以後使用的元素,例如提及意。 var something = Ext.get("myDiv");那麼也許something.sort(); something.badger(); return something;