Stare pytanie, ale pół dekady później warto do niego wrócić. Tutaj omawiam tylko aspekt selektora jQuery.
document.querySelector[All]
jest obsługiwany przez wszystkie obecne przeglądarki, aż do IE8, więc kompatybilność nie jest już problemem. Nie znalazłem również żadnych problemów z wydajnością, o których mógłbym mówić (miał być wolniejszy niż document.getElementById
, ale moje własne testy sugerują, że jest nieco szybszy).
Dlatego jeśli chodzi o bezpośrednie manipulowanie elementem, powinien być preferowany niż jQuery.
Na przykład:
var element=document.querySelector('h1');
element.innerHTML='Hello';
jest znacznie lepszy:
var $element=$('h1');
$element.html('hello');
Aby w ogóle cokolwiek zrobić, jQuery musi przejść przez sto linii kodu (kiedyś prześledziłem kod, taki jak powyższy, aby zobaczyć, co właściwie jQuery z nim robi). To z pewnością strata czasu dla wszystkich.
Innym znaczącym kosztem jQuery jest to, że opakowuje wszystko w nowy obiekt jQuery. Ten narzut jest szczególnie marnotrawny, jeśli musisz ponownie rozpakować obiekt lub użyć jednej z metod obiektu, aby poradzić sobie z właściwościami, które są już widoczne w oryginalnym elemencie.
Jednak zaletą jQuery jest sposób, w jaki obsługuje kolekcje. Jeśli wymaganiem jest ustawienie właściwości wielu elementów, jQuery ma wbudowaną each
metodę, która pozwala na coś takiego:
var $elements=$('h2'); // multiple elements
$elements.html('hello');
Aby to zrobić z Vanilla JavaScript wymagałoby czegoś takiego:
var elements=document.querySelectorAll('h2');
elements.forEach(function(e) {
e.innerHTML='Hello';
});
co niektórzy uważają za zniechęcające.
Selektory jQuery również są nieco inne, ale nowoczesne przeglądarki (z wyjątkiem IE8) nie przyniosą większych korzyści.
Z reguły odradzam używanie jQuery do nowych projektów:
- jQuery to zewnętrzna biblioteka dodająca do kosztów ogólnych projektu i do Twojej zależności od stron trzecich.
- Funkcja jQuery jest bardzo droga, jeśli chodzi o przetwarzanie.
- jQuery narzuca metodologię, której należy się nauczyć i która może konkurować z innymi aspektami kodu.
- jQuery wolno udostępnia nowe funkcje w JavaScript.
Jeśli żadne z powyższych nie ma znaczenia, rób, co chcesz. Jednak jQuery nie jest już tak ważny dla tworzenia aplikacji wieloplatformowych, jak kiedyś, ponieważ nowoczesny JavaScript i CSS idą o wiele dalej niż kiedyś.
Nie wspomina się o innych cechach jQuery. Myślę jednak, że oni również potrzebują bliższego przyjrzenia się.
querySelector
metodach. (3) Wykonywanie połączeń AJAX jest znacznie szybsze i łatwiejsze dzięki jQuery. (4) Wsparcie w IE6 +. Jestem pewien, że jest o wiele więcej punktów, które można by poruszyć.