哪个更好 - Ext.get() 或 document.getElementById()

Posted

技术标签:

【中文标题】哪个更好 - Ext.get() 或 document.getElementById()【英文标题】:Which is better - Ext.get() or document.getElementById() 【发布时间】:2011-12-31 16:35:28 【问题描述】:

Ext.get()document.getElementById() 在性能方面有什么区别? Ext.get() 会因为内部调用 document.getElementById() 而变慢吗?或者使用Ext.get() 有什么特别的好处吗?

【问题讨论】:

document.getElementById() == Ext.get().dom 【参考方案1】:

Ext.get 相对于 getElementById 的主要优势在于它返回给您一个 Ext.Element 实例。此实例不仅包含 getElementById 将为您提供的 DOM 节点引用,而且还显着扩展了它 - 提供了一套便利方法、事件规范化和消除跨浏览器差异。

从表面上看,getElementById 可能比 Ext.get 有一些微不足道的速度增益,这只是基于在进行相同的基本 DOM 调用之前少了一个函数。但是,就整体性能而言,您在检索后对元素执行的操作可能会比检索本身产生更大的影响。拥有 Ext.Element 包装器可能会非常有益。

您可能还想看看 Ext.fly。此方法与 Ext.get 类似,不同之处在于它返回给您一个单例 Ext.Element 实例。如果您需要存储元素以供以后使用,那将没有任何好处,但如果您对唯一的 DOM 节点进行简单的一次性操作,它可能比 Ext.get 便宜。

【讨论】:

【参考方案2】:

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 框架的调用更少。

【讨论】:

【参考方案4】:

在性能方面,原生 JS 函数总是更快。

但是,我并不是说不要使用 JS 库,它们很棒:

减少编写代码的时间 它使您的代码更具可读性 您编写的代码更少(减少文件大小和下载时间)

最后,也许您甚至可以节省时间,因为更少的代码意味着更快的下载速度,在某些情况下甚至可以超越性能。

所以,是的,使用其中一个是一样的,因为一方面您可以通过性能节省时间(“document.getElementById()”),另一方面您可以减少文件大小和下载时间(“Ext.getElementById()”)。得到()”)。

您可以同时使用两者,应该不会有任何明显的区别。

【讨论】:

【参考方案5】:

正如其他人所避开的那样,所使用的方法取决于需要,如果您只是想为某些非 Ext 目的获取对 dom 元素的引用,您也可以使用本机函数,但如果您打算执行操作在 Ext 上下文中返回的对象,然后 Ext.get 将返回一个元素引用,它提供了额外的方法。

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;

【讨论】:

【参考方案6】:

我不熟悉 Ext 库,但使用原生 Javascript,只有少数几种方法可以获取特定元素;您可以通过它的 ID 来获取它,在通过标签名称获取所有元素后搜索它(我相信这就是 JQuery 通过类名获取元素的方式),或者,对于 HTML5 的新手,通过类名获取元素。如果您有创意,还有其他几种方法;) 假设您没有保存本地参考,仅通过 ID 获取它是最快的。

所以,如果你只是想获取一个元素而不执行 Ext.js 通过该函数调用所做的任何事情,那么原生 Javascript 会快得多。

【讨论】:

以上是关于哪个更好 - Ext.get() 或 document.getElementById()的主要内容,如果未能解决你的问题,请参考以下文章

Magento 或 Prestashop,哪个更好? [关闭]

Coredata或Sqlite哪个更好[关闭]

Thymeleaf 或 JSP:Spring Boot 哪个更好?

GetGlobalResourceObject 或 Resources.Resource - 哪个更好?

PHP Sessions 或 cookie,哪个更好? [复制]

哪个更好用:用于显示大量数据的 DataGrid 或 ListView?