Когда использовать Vanilla JavaScript против jQuery? - PullRequest
232 голосов
/ 11 января 2011

Я заметил, отслеживая / пытаясь ответить на распространенные вопросы jQuery, что есть определенные практики, использующие javascript вместо jQuery, которые фактически позволяют вам писать меньше и делать ... ну то же самое,А также может принести выигрыш в производительности.

Конкретный пример

$(this) против this

Внутри события щелчка, ссылающегося на объекты, по которым щелкнули, id

jQuery

$(this).attr("id");

Javascript

this.id;

Существуют ли другие распространенные практики, подобные этой?Где некоторые операции Javascript могут быть выполнены проще, без привлечения JQuery в смесь.Или это редкий случай?(из «ярлыка» jQuery, на самом деле требующего большего количества кода)

РЕДАКТИРОВАТЬ: Хотя я ценю ответы относительно производительности jQuery и простой JavaScript, на самом деле я ищу гораздо более количественные ответы. При использовании jQuery - случаи, когда было бы лучше (удобочитаемость / компактность) использовать простой javascript вместо $().В дополнение к примеру, который я привел в своем первоначальном вопросе.

Ответы [ 13 ]

2 голосов
/ 28 июня 2017

Вот нетехнический ответ - многие задания могут не разрешать определенные библиотеки, такие как jQuery.

Фактически, Google фактически не разрешает jQuery ни в одном из своих кодов (ни в React, потому что он принадлежит Facebook), чего вы могли не знать, пока интервьюер не скажет: «Извините, но вы не можете использовать jQuery, его нет в утвержденном списке в XYZ Corporation ". Vanilla JavaScript работает абсолютно везде, всегда и никогда не доставит вам этой проблемы. Если вы полагаетесь на библиотеку, да, вы получаете скорость и легкость, но вы теряете универсальность.

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

2 голосов
/ 06 декабря 2013

Как обычно, я опаздываю на эту вечеринку.

Это была не дополнительная функциональность, которая заставила меня принять решение использовать jQuery, каким бы привлекательным он ни был.В конце концов, ничто не мешает вам писать свои собственные функции.

Это был тот факт, что было так много хитростей, которые нужно выучить при модификации DOM, чтобы избежать утечек памяти (я говорю о вас, IE).Иметь один центральный ресурс, который решал бы все эти проблемы для меня, написанный людьми, которые были намного лучше, чем JS-программисты, чем я когда-либо буду, и который постоянно пересматривался, пересматривался и проверялся, был просто божьим посылом.* Я полагаю, что этот вид подпадает под аргумент кросс-браузерной поддержки / абстракции.

И, конечно же, jQuery не исключает использования прямой JS, когда вам это нужно.Я всегда чувствовал, что эти два, кажется, работают без сбоев.

Конечно, если ваш браузер не поддерживается jQuery или вы поддерживаете среду низкого уровня (старый телефон?), Тогда большой файл .js может быть проблемой,Помните, когда jQuery был крошечным?

Но обычно разница в производительности не является проблемой.Это должно быть достаточно быстро.Поскольку гигагерц циклов ЦП расходуется каждую секунду, меня больше беспокоит производительность моих кодеров, единственных ресурсов разработки, мощность которых не удваивается каждые 18 месяцев.

Тем не менее, я сейчасглядя на проблемы доступности и, видимо, .innerHTML немного нет с этим.jQuery, конечно, зависит от .innerHTML, поэтому сейчас я ищу среду, которая будет зависеть от несколько утомительных методов, которые разрешены.И я могу себе представить, что такая инфраструктура будет работать медленнее, чем jQuery, но пока она работает достаточно хорошо, я буду счастлив.

1 голос
/ 20 сентября 2011

$(this) отличается от this:

Используя $(this), вы обеспечиваете передачу прототипа jQuery на объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...