Quali vantaggi ci sono nello sviluppo nativo di JavaScript? [chiuso]

33

Dato quanto è più semplice lo sviluppo di jQuery, rispetto a JavaScript nativo, che cosa rende le persone perdono del tutto le librerie come jQuery?

Questo perché jQuery ha dei limiti o è lento? Voglio dire, se jQuery è così facile rispetto al javascript nativo, quali sono le ragioni per cui le persone devono ancora usare il javascript puro?

    
posta Mike 29.11.2011 - 06:36
fonte

14 risposte

88

Parliamo di automobili.

Oh aspetta, l'abbiamo già fatto - ricordi quella volta che ci siamo incontrati, qualche tempo fa? Abbiamo parlato di automobili. In effetti, sembravi essere piuttosto l'esperto di macchine. Sei stato in grado di spiegare, in dettaglio, tutto ciò che è giusto, sbagliato ed entusiasmante per l'ultima gara di Formula 1. Sapevi a memoria tutti i modelli Lamborghini, compresi il prezzo e la disponibilità. Hai persino pensato di acquistare la tua Ferrari 599 GTB Fiorano e ti stavi risparmiando (scommetto che la cena con la bistecca non l'ha t molto di aiuto).

Mentre spiegavo i difetti di Toyota con una voce grande ed eccitata, all'improvviso sei saltato dalla sedia e hai urlato nell'aria, agitando i pugni: "Accidenti a tutto, sono un magnifico esperto di tutto ciò che riguarda le auto ! Sarò un meccanico di auto! "

E così sei andato. Hai avuto un'intervista, il Boss Man è rimasto impressionato quanto me dalle tue conoscenze e sei stato assunto. Il primo cliente entrò. La sua frizione era rotta. L'hai ispezionato e non sapevi cosa fare. In effetti, non avevi assolutamente idea di come seguire il consiglio che ti ha dato Boss Man. Sei stato licenziato.

Ma come potrebbe essere !? Conoscete tutto sulle automobili! Tranne ... tutto sulle auto. Sai benissimo che la tua auto dei sogni ha un motore V12, ma non sai cosa significhi realmente.

Quindi non sei un meccanico di auto, davvero - sei un appassionato di auto. E finché non imparerai come funzionano le automobili , rimarrai entusiasta.

Ora lascia che te lo chieda. Come funziona $.fn.text ? E per quanto riguarda $.fn ? Cosa intendono veramente? In che modo $(something) restituisce un cosa gigantesco contenente cose, e cos'è esattamente quel cosa? Puoi replicare la loro funzionalità, almeno un po ', anche in teoria? Riesci a far fronte senza jQuery?

Dire che "JavaScript nativo è difficile" è solo ... falso. Innanzitutto, perché JavaScript come linguaggio non ha nulla a che fare con il DOM , che è principalmente ciò che abbozza jQuery. Secondo perché una volta che hai imparato qualcosa sul DOM, puoi già navigare tra i più comuni bug tra browser. Ma solo un piccolo segreto: all'inizio è tutto difficile. La divisione lunga era una cagna in quinta elementare.

Come seconda analogia per questa risposta: jQuery è JavaScript-DOM (non JavaScript la lingua, solo il DOM) come Array.prototype.forEach è a for . Funziona, per il 99% dei casi. E funziona bene. Ma per quell'1% che non è coperto, hai bisogno di sapere come usare il ciclo for , se non altro per essere pratico. Questa intera risposta è basata sul lato "più puro" della domanda, e nemmeno sul lato tecnico (la dimensione della biblioteca, per esempio, e molte altre cose, come spiegato nella risposta di Michael Dorrant). Perché amo JavaScript e quando le persone sembrano semplicemente metterlo da parte per dire in modo casuale "pah, quei silly javascriptians" e sventolando fantasiosi guanti bianchi, si arriva alla morale.

Se puoi accettare il fatto che sarai sempre un appassionato di JavaScript, allora chi sono io per fermarti? Ma se vuoi essere un programmatore JavaScript, devi prima avere le conoscenze per almeno scegliere tra l'uso di jQuery (o qualsiasi altra libreria) e non usare una libreria. Impara il DOM. Impara come usarlo. Scrivi la tua piccola biblioteca o solo alcune raccolte di funzioni di supporto. E una volta che sei a conoscenza del DOM, e scegli di usare jQuery - Godspeed. La pigrizia è stata premiata per coloro che hanno lavorato sodo.

    
risposta data 29.01.2012 - 14:02
fonte
12

Motivi che conosco:

  1. Quando la necessità è estremamente ridotta, diciamo 1 onclick.

  2. Quando la velocità di download è fondamentale e la libreria jQuery è troppo grande E non è necessario scrivere molto codice (personalizzato) per sostituirlo.

  3. Quando si integra con altre tecnologie, a volte js raw è migliore.

  4. Quando si lavora su un sistema legacy (noto anche come "produzione") già scritto in js con pattern stabiliti.

risposta data 29.11.2011 - 06:40
fonte
7

jQuery è semplicemente un framework: una serie di strumenti scritti in JavaScript. Usando quel set di strumenti stai ancora usando JavaScript. Alcune persone preferiscono scrivere JavaScript usando gli strumenti forniti da jQuery, alcuni scelgono di non farlo, altri scelgono altri set di strumenti.

Alcuni motivi per cui potresti voler scrivere JavaScript "puro" senza jQuery:

  • Le pagine vengono caricate più velocemente senza includere file jQuery aggiuntivi
  • Alcuni framework potrebbero essere incompatibili con jQuery
  • Il codice scritto non fa nulla che jQuery aiuti con
  • Il codice viene scritto per essere utilizzato da altri e richiedere jQuery come dipendenza renderebbe la condivisione più difficile
  • L'autore del codice desidera un controllo maggiore di quello fornito da jQuery
risposta data 29.11.2011 - 06:43
fonte
5

jQuery, come qualsiasi libreria o framework, aggiunge un altro livello di bug . Lo adoro, ma ho anche perso un giorno alla ricerca di un bug che si è rivelato essere nel core jQuery e non nel mio codice (un'occasione rara, ma non così rara).

Oltre a questo non trovo nessun altro motivo per non usarlo:

  • Il sovraccarico è minimo, soprattutto se utilizzi la versione di Google ospitata ,
  • Aiuta gli sviluppatori di Javascript meno esperti a scrivere codice più pulito e più efficiente,
  • È principalmente multipiattaforma, che può essere salvavita quando devi gestire browser più vecchi,
  • L'enorme galleria di plug-in mi aiuta a scrivere prototipi in tempi brevissimi,
  • Il DOM ha senso,
  • blah blah blah ...

MA non dovrebbe mai essere usato come sostituto della conoscenza di Javascript. Se non sai come farlo in puro Javascript, puoi iniziare a farla finita con una libreria, ma a lungo andare la pagherai.

E naturalmente ci sono tutti noi che sono stati bloccati in un combattimento mortale con IE6 per diversi anni, e non lasceremo facilmente andare i nostri trucchi della vecchia scuola a favore di un nuovo giocattolo brillante.

    
risposta data 29.11.2011 - 10:04
fonte
5

Nell'ambiente del browser è necessario uno strumento di normalizzazione cross browser. Tale strumento è disponibile in due versioni

  • avvolge gli oggetti host con nuovi oggetti che si comportano nello stesso modo attraverso i browser
  • estendi gli oggetti host per implementare l'API DOM.

In genere puoi utilizzare queste utilità in uno dei tre modi

  • usa piccole funzioni come addClass o setText per tutto il codice quando e dove ne hai bisogno
  • scrivi la tua libreria di normalizzazione cross-browser
  • usa uno esistente.

Hai bisogno di qualche meccanismo di normalizzazione altrimenti riceverai il supporto per il cross browser a zero.

Per quanto riguarda l'utilizzo di uno esistente, va bene. Non vorrei usare jQuery. Personalmente sto attualmente scrivendo la mia libreria personale ( DOM-shim , che risolve i browser senza esporre un'API propietoriale straniera. browser in un unico browser standard ben funzionante).

    
risposta data 29.11.2011 - 14:46
fonte
3

Se non hai bisogno dell'astrazione DOM, del browser cross-browser e del supporto legacy, puoi tranquillamente andare senza jQuery.

Questo è il caso in cui si sviluppano estensioni del browser, script greasemonkey (a volte), roaming di numeri, sviluppo per Node.js o altri ambienti non di browser.

    
risposta data 29.01.2012 - 14:50
fonte
2

Insieme alle altre risposte qui, in particolare di Michael Durrant , ho visto velocità è una delle ragioni principali per cui occasionalmente scelgo di utilizzare JavaScript non formattato.

Ultimamente ho lavorato su molte animazioni o su altri compiti intensivi della CPU e alcune volte il JavaScript non elaborato è molto, molto più veloce di quando si passa attraverso jQuery.

Un esempio è dove volevo cambiare l'opacità di un elemento position: fixed in relazione a quanto in basso su una pagina scorre un utente. L'effetto è stato troppo lento quando ho usato jQuery per questo, causando lo scrolling a scatti e l'effetto dissolvenza è stato rovinato. Sono passato ad usare il diritto JavaScript e tutto era setoso in tutto tranne IE < = 8.

    
risposta data 29.11.2011 - 17:56
fonte
2

Ho bisogno di prefigurare la mia risposta con un po 'di onestà aperta. Amo jQuery. Rende la mia vita enormemente più semplice e rende il codice JavaScript più dichiarativo, il che è il modo in cui credo che le cose dovrebbero funzionare.

jQuery fa molte cose ...

puoi aggiungere plugin
puoi estendere i selettori
semplifica l'animazione

ma jQuery non esegue tutto

Hai mai provato a lavorare in più contesti di finestre con jQuery? jQuery fa schifo nell'affrontare i diversi contesti della finestra perché conserva il contesto originale window e document dalla finestra in cui è stato chiamato.

Ho scritto del codice qua e là per creare popout *, e jQuery può semplicemente ostacolare quello che sto cercando di realizzare. Aggiungere un nuovo riferimento a jQuery nella finestra figlio può spesso peggiorare le cose rendendo più difficile stabilire quale contesto jQuery è in uso.

* pensa al popout di Gmail per comporre un'email in una nuova finestra, non per pubblicità spammatica

Usalo quando rende il codice più semplice

Il tempo di usare jQuery è quando puoi rendere il tuo codice più semplice, più breve, più leggibile e più veloce.

Il tempo per non utilizzare jQuery è quando non renderà il tuo codice più semplice, più breve, più leggibile o più veloce. Se hai bisogno di ottimizzare i tempi di caricamento, potresti non voler usare jQuery a causa dell'overhead dell'evento.

    
risposta data 29.11.2011 - 19:31
fonte
2

Come saprai, jQuery è una struttura generale che fornisce molti metodi che molti di noi non usano nei nostri progetti. (Alcuni di loro non li ho usati affatto.)

Ci sono due ragioni principali per non utilizzare jQuery o altri framework consolidati.

1. Il progetto non è abbastanza grande o complesso da utilizzare un simile framework: In questo caso, il coder prende una decisione informata in base alla sua esperienza e conoscenza in JavaScript. Questo lo aiuterà a ridurre il peso della pagina e anche un maggiore controllo sul codice.

2. Il programmatore sviluppa il proprio framework Ho visto un progetto nella mia azienda che ha il proprio framework JavaScript. Il motivo per cui si cita è che se usano jQuery e c'è qualche bug da sistemare, devono aspettare fino alla prossima versione. Inoltre, se c'è una caratteristica da aggiungere, è necessario chiedere al team jQuery o aggiungere un plug-in anche se renderlo un plugin non sarà una buona idea (hanno dato l'esempio di aver usato un .live simile cosa nel loro quadro ancor prima che fosse ufficialmente aggiunto a JQuery). Avere il proprio framework ti dà più controllo sul codice. Lo svantaggio è che è necessario reinventare la ruota per quanto riguarda i problemi di compatibilità del browser, ecc. Inoltre, se il processo di sviluppo non è buono, il tuo framework si gonfierà e aumenterà solo il tempo per mantenerlo.

    
risposta data 29.11.2011 - 07:05
fonte
0

Mike

Penso che le persone si astengano dall'usare alcune librerie a causa della dipendenza da tale infrastruttura / soluzione di libreria per eseguire alcune attività.

Ma facciamo attenzione a ricordare che le lingue vanno e vengono come biblioteche a lungo termine.

Quindi forse è l'ambito temporale. Forse le persone sono riluttanti a investire in una biblioteca che potrebbe non essere lì - o che hanno avuto un notevole impulso a lungo termine.

Io? Non ho obiezioni all'utilizzo di JQuery in particolare. Guardo anche Box2d.js o three.js e preferisco abbracciarli anche se la durata a breve termine è scadente, piuttosto che perdere i frutti che hanno da offrire.

La linea di fondo di Mike è che c'è un rischio nella shelf life di una libreria che scegli, e penso che alcuni nella comunità di javascript potrebbero aver subito perdite a causa di una biblioteca o di un progetto che si concludeva, e potrebbe aver appena detto - mai ancora.

    
risposta data 03.09.2014 - 06:56
fonte
0

Direi che il problema principale è che sempre più persone (la stragrande maggioranza?) non sanno più come codificare in JavaScript più. Se jQuery non può fare qualcosa, non può farlo.

Sta arrivando al punto che gli esempi javascript semplici stanno diventando difficili da trovare. Niente contro jQuery; è un ottimo quadro. Ho ricevuto molte buone idee, ma le persone dovrebbero prima imparare JavaScript e poi imparare un framework. Personalmente trovo il mio framework più flessibile e più adatto alle mie esigenze, e sì, a volte reinvento la ruota, ma il controllo totale e il controllo sulle correzioni dei bug sono un enorme vantaggio, a patto che tu voglia mettere il lavoro in apprendimento JavaScript.

Non solo. Conoscere vanilla JavaScript rende molto più divertente giocare e sperimentare con le nuove funzionalità invece di aspettare un'implementazione basata su framework. Inoltre, non biasimo jQuery per questo poiché è principalmente una libreria DOM , ma può essere difficile bilanciare con grandi progetti. Altre strutture fanno un lavoro migliore in questo; Mi viene in mente Prototype .

In breve, è un ottimo framework, ma non tutti gli end-all sono riusciti a farlo.

    
risposta data 07.07.2013 - 17:53
fonte
0

Posso aggiungere altri due motivi che non sono stati menzionati:

  1. Quando raccolgo una tecnologia nuova di zecca, molte volte, inizierei con i costrutti di livello inferiore prima di passare a quelli di livello superiore. Sono principalmente uno sviluppatore C ++ / C #, ma qualche tempo fa, quando ho iniziato a giocare con HTML / CSS / JavaScript, ho scelto di non usare alcun framework perché volevo prima capire la tecnologia (cioè, il JavaScript linguaggio stesso) che quei quadri sono costruiti sopra.

    • Detto questo, ho scoperto jQuery e non avrei mai voluto tornare a codificare a mano ciò che jQuery può fare per te in 1-2 righe di codice.
  2. Non so quanto sia comune, ma a me sembra che ci siano molte persone che quando vedono il prossimo framework / tecnologia / lingua, la loro prima risposta è "non un'altra API per io per imparare! " A loro non importa quanto sia facile jQuery, ma semplicemente lo vedono come un ostacolo tra loro e l'offerta di lavoro usando i loro metodi "veri e provati". Questa è la stessa categoria di persone che si rifiutano di utilizzare la libreria Boost o una qualsiasi delle < a href="http://en.wikipedia.org/wiki/Standard_Template_Library"> STL e continua a utilizzare malloc per quasi tutto. Hai chiesto perché scelgono JavaScript puro su jQuery e in realtà non hanno mai fatto la scelta perché la maggior parte delle volte si sono rifiutati di valutare jQuery in primo luogo e sono perfettamente soddisfatti del loro attuale ritmo di sviluppo, non importa quanto sia lento.

risposta data 28.01.2012 - 22:43
fonte
-1

jQuery è una libreria scritta in e per JavaScript. L'idea è che rende tutte le cose difficili / noiose di JavaScript semplici, velocizzando così i tempi di sviluppo e rendendo molto più probabile che i tuoi script funzionino su più browser.

Ciò che rende preferibile utilizzare jQuery:

  • Veloce
  • Libreria JavaScript leggera
  • CSS 3 conforme
  • Supporta molti browser.
  • Il framework jQuery è estensibile e gestisce manipolazioni DOM, CSS, Ajax , eventi e animazioni.

JavaScript is a language whereas jQuery is a library written using JavaScript.

Ecco i motivi che rendono preferibile utilizzare JavaScript piuttosto che jQuery:

  1. Carica l'intera libreria di script jQuery ogni volta con la pagina. È un inconveniente per sito web di elaborazione di query peed / fast.
  2. Talvolta il framework jQuery collassa / entra in conflitto con altri framework.
  3. Se stai scrivendo un codice semplice per selezionare semplicemente un elemento e mostrare altera, allora il codice JavaScript nativo è molto meglio.
  4. Se le operazioni sono piccole ed eseguite all'interno di poche righe di codice di JavaScript, non è opportuno usare jQuery.

Per questi motivi, mi piace usare JavaScript per evitare il framework jQuery. È molto meglio imparare JavaScript piuttosto che su una tale libreria ...

Anche se vuoi estenderli, devi scrivere codice in JavaScript. Che è anche un grande discorso Gli sviluppatori dipendono da queste librerie, quindi per avere il controllo sui progetti, JavaScript è meglio che usare i framework.

    
risposta data 29.11.2011 - 08:06
fonte
-4

Penso che le persone usino jQuery perché è più semplice, più facile e più potente e perché aiuta a dimenticare IE. Inoltre, per le funzionalità personalizzate le persone usano javascript. Prova a fare riferimento a DOC per ulteriori dettagli

    
risposta data 29.11.2011 - 06:39
fonte