Il ruolo principale di jQuery è quello di normalizzare l'API DOM, che è l'unica cosa su cui i browser non sono d'accordo da più di un decennio (fino alla pubblicazione di IE9). È meglio pensato come uno strumento di una biblioteca. Fondamentalmente è solo una funzione di fabbrica che restituisce un adattatore unito a un po 'di decoratore che avvolge e normalizza l'API dell'oggetto DOM con molta riduzione di cruft e alcuni extra aggiuntivi come la funzione animate e un sistema di eventi che ti permette di sparare e ascoltare nuovi eventi al volo su qualsiasi oggetto senza nemmeno prima definirli da qualche parte.
Ciò che non fa è aiutarti a scrivere un codice orientato all'app più complesso e manutenibile (beh, la cosa dell'evento è pulita, ma abbastanza facile da fare fai-da-te), usa bene gli oggetti, o usa uno qualsiasi dei core ECMA spec osserva che in realtà costituiscono la base per il linguaggio di base di JavaScript.
Tra gli opportuni sviluppatori JavaScript, ci vuole pochissimo tempo per filtrare gli sviluppatori che saranno utili su un progetto da web designer o sviluppatori di CMS che mirano ad aumentare di stipendio facendo cose terribili con uno strumento che avrebbero piuttosto non capire sotto il cofano se possono evitarlo.
Inoltre, l'API DOM è piuttosto prolissa con nomi di metodi che praticamente scrivono la loro documentazione (avvicinandosi alla lunghezza del paragrafo in fondo), che è una buona cosa, IMO. Vogliamo che le cose core native siano ovvie e spiegate. Ma la noiosa natura della scrittura con esso ci incoraggia ad usare JavaScript per fare qualcosa che è molto bravo. Elimina cruft, normalizza e piega l'API a un paradigma che funziona meglio per noi. Personalmente ritengo che jQuery abbia fatto un lavoro sbalorditivo di questo rispetto alla maggior parte dei suoi contemporanei e che tu possa imparare molto su JavaScript (come come mantenere i tuoi oggetti davvero leggeri per quanto riguarda la memoria) studiando jQuery sotto il cofano.
Ma non lo userei come spazio dei nomi di libreria UI pre-fab. E non scarterei i loop a favore dell'uso di .each su tutto. E spesso passo indietro ai metodi API DOM quando JQuery aggiunge lavoro senza eliminare veramente cruft che fa apparire una delle funzionalità più importanti di jQuery a quelli di noi che sanno davvero cosa stiamo facendo. Non ti disturba quando non lo vuoi lì.
Ma non fare errori. Se non sai come farlo senza jQuery sei nel migliore dei casi uno sviluppatore entry-level di JavaScript / lato client. D'altra parte, se conosci solo JavaScript e hai solo una minima conoscenza dei CSS, è meglio concentrarti su qualcosa di diverso dai problemi dell'interfaccia utente.
Modifica: Mi rendo conto di concentrarmi su JQ un po 'troppo per una domanda che è stata posta più in generale.
La maggior parte degli altri popolari strumenti / librerie / framework JS sono o librerie UI, nessuna delle quali sono una grande fan (troppo rigida in genere) e framework di applicazione rapida che applicano concetti di MVC o modelli simili. Preferirei personalmente l'architettura DIY (e sono un po 'diffidente nei confronti di questo modello vincolante nella tendenza dei modelli) ma questi nuovi framework non sono il genere di cose implementate dagli sviluppatori JS che non possono gestire i problemi di codice che richiedono JS- stessi alfabetizzazione, scommetterei.