Что лучше - Ext.get () или document.getElementById () - PullRequest
9 голосов
/ 31 декабря 2011

В чем разница между Ext.get() и document.getElementById() с точки зрения производительности? Будет ли Ext.get() медленнее, поскольку это может вызвать внутренний вызов document.getElementById()? Или есть какое-то конкретное преимущество использования Ext.get()?

Ответы [ 6 ]

17 голосов
/ 01 января 2012

Принципиальное преимущество Ext.get над getElementById состоит в том, что он возвращает вам экземпляр Ext.Element.Этот экземпляр не только содержит ссылку на узел DOM, которую дает вам getElementById, но и значительно расширяет ее - предлагая набор удобных методов, нормализацию событий и устранение различий между браузерами.

На поверхности getElementByIdможет иметь некоторое незначительное увеличение скорости по сравнению с Ext.get просто на основе на одну функцию меньше, прежде чем перейти к тому же фундаментальному вызову DOM.Однако с точки зрения общей производительности то, что вы делаете с элементом после извлечения, скорее всего, окажет гораздо большее влияние, чем само извлечение.Наличие обертки Ext.Element может оказаться весьма полезным.

Возможно, вы захотите взглянуть и на Ext.fly.Этот метод похож на Ext.get за исключением того, что он возвращает вам одноэлементный экземпляр Ext.Element.Это не будет хорошо, если вам нужно сохранить элемент для последующего использования, но если вы делаете простые одноразовые операции с уникальными узлами DOM, это может быть дешевле, чем Ext.get.

3 голосов
/ 31 декабря 2011

С точки зрения производительности собственные функции JS всегда будут быстрее.

Однако я не говорю, что не следует использовать библиотеки JS, они великолепны, поскольку они:

  • уменьшаютвремя написания вашего кода
  • делает ваш код более читабельным
  • вы пишете меньше кода (сокращая размер файла и время загрузки)

И в конце, может быть, вы даже экономите время, потому что меньше кода означает более быструю загрузку, а в некоторых случаях это может даже снизить производительность.

Так что да, использование одного над другим одинаково, поскольку в одной руке вы экономите времяпо производительности ("document.getElementById ()"), а с другой стороны вы уменьшаете размер файла и время загрузки ("Ext.get ()").

Вы можете использовать оба, и не должно быть никаких заметныхразница.

3 голосов
/ 31 декабря 2011

Ext.get() позволяет использовать String ID, существующий HTMLElement или Ext.Element - так что это немного более гибко. document.getElementById() принимает только идентификатор строки.

Тем не менее, я бы просто использовал document.getElementById(), если это соответствует вашим потребностям. Он встроен в браузер и должен быть немного быстрее - и это всего лишь один вызов, с помощью которого вы приковываете себя к определенной среде JavaScript.

3 голосов
/ 31 декабря 2011

document.getElementById() является нативным JavaScript и поэтому будет быстрее, чем Ext.get()

Теперь, почему вообще существует Ext.get(),

document.getElementById() возвращает элемент DOM, тогда как Ext.get() возвращает объект Ext, который пригоден для цепочек.

И это также причина, по которой jQuery имеет $("#elm_id").Обратите внимание, что Ext.get() также гораздо проще набирать:)

1 голос
/ 01 января 2012

Поскольку другие ускользали от этого, используемый метод зависит от необходимости, если вы просто хотите получить ссылку на элемент dom для какой-либо не связанной с Ext цели, вы также можете использовать встроенную функцию, но если вы намереваетесь выполнить действия надвозвращенный объект в контексте Ext, тогда Ext.get вернет вам ссылку на элемент, который предлагает дополнительные методы.

Ext.get - это сокращение от Ext.ComponentManager.get, а это вызов библиотечной функции.и может быть менее эффективным, следует отметить, что в Ext.Element доступно ~ 180 методов, поэтому, если они вам нужны, может быть целесообразно включить вызов оболочки.

Как уже упоминалось, Ext.fly ()разработан, когда вам нужно выполнить одну функцию над элементом, например.Ext.fly("myDiv").hide();, тогда как Ext.get () предназначен, когда вам нужна ссылка на элемент для последующего использования, например.var something = Ext.get("myDiv"); тогда возможно something.sort(); something.badger(); return something;

0 голосов
/ 31 декабря 2011

Я незнаком с библиотекой Ext, но с ванильным Javascript есть только несколько способов получить определенный элемент;вы можете получить его по его идентификатору, выполнить поиск после получения всех элементов по имени тега (я так полагаю, что JQuery получает элементы по имени класса) или, впервые в HTML5, получить элемент по имени класса.Есть несколько других способов, если вы проявите творческий подход;) Самый быстрый способ получить его по идентификатору, при условии, что вы не сохранили локальную ссылку.

Итак, если все, что вы пытаетесь сделать, это получить элементбез выполнения каких-либо действий Ext.js с помощью этого вызова функции, ванильный Javascript будет намного быстрее.

...