Vecchia domanda, ma mezzo decennio dopo, vale la pena rivisitare. Qui sto solo discutendo l'aspetto selettore di jQuery.
document.querySelector[All]
è supportato da tutti i browser attuali, fino a IE8, quindi la compatibilità non è più un problema. Inoltre non ho riscontrato problemi di prestazioni di cui parlare (avrebbe dovuto essere più lento di document.getElementById
, ma i miei test suggeriscono che è leggermente più veloce).
Pertanto, quando si tratta di manipolare direttamente un elemento, è preferibile rispetto a jQuery.
Per esempio:
var element=document.querySelector('h1');
element.innerHTML='Hello';
è notevolmente superiore a:
var $element=$('h1');
$element.html('hello');
Per fare qualsiasi cosa, jQuery deve scorrere attraverso un centinaio di righe di codice (una volta ho rintracciato codice come quello sopra per vedere cosa ci faceva effettivamente jQuery). Questo è chiaramente uno spreco di tempo per tutti.
L'altro costo significativo di jQuery è il fatto che avvolge tutto all'interno di un nuovo oggetto jQuery. Questo sovraccarico è particolarmente dispendioso se è necessario scartare nuovamente l'oggetto o utilizzare uno dei metodi dell'oggetto per gestire le proprietà che sono già esposte sull'elemento originale.
Dove jQuery ha un vantaggio, tuttavia, sta nel modo in cui gestisce le raccolte. Se il requisito è impostare proprietà di più elementi, jQuery ha un each
metodo integrato che consente qualcosa del genere:
var $elements=$('h2'); // multiple elements
$elements.html('hello');
Per farlo con Vanilla JavaScript richiederebbe qualcosa del genere:
var elements=document.querySelectorAll('h2');
elements.forEach(function(e) {
e.innerHTML='Hello';
});
che alcuni trovano scoraggianti.
Anche i selettori jQuery sono leggermente diversi, ma i browser moderni (escluso IE8) non otterranno molti vantaggi.
Di norma, avverto di non utilizzare jQuery per nuovi progetti:
- jQuery è una libreria esterna che si aggiunge al sovraccarico del progetto e alla tua dipendenza da terze parti.
- La funzione jQuery è molto costosa, in termini di elaborazione.
- jQuery impone una metodologia che deve essere appresa e può competere con altri aspetti del codice.
- jQuery è lento nell'esporre nuove funzionalità in JavaScript.
Se nessuna delle precedenti è importante, fai quello che vuoi. Tuttavia, jQuery non è più importante per lo sviluppo multipiattaforma come una volta, dato che i moderni JavaScript e CSS vanno molto più in là rispetto al passato.
Questo non fa menzione di altre funzionalità di jQuery. Tuttavia, penso che anche loro abbiano bisogno di uno sguardo più attento.
querySelector
metodi. (3) Effettuare chiamate AJAX è molto più semplice e veloce con jQuery. (4) Supporto in IE6 +. Sono sicuro che ci sono anche molti altri punti che potrebbero essere sollevati.