Quali sono i vantaggi dello sviluppo nativo di JavaScript? [chiuso]


33

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

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


1
jQuery è solo una libreria: scrivere JS nativo che utilizza jQuery sta ancora scrivendo JS nativo. È come chiedere "Quali sono i vantaggi dello sviluppo C ++ nativo?" quando parli di "sviluppo C ++ senza Boost".
Zach


1
L'obiettivo principale di jQuery e di altre vecchie librerie era quello di creare una facciata su diversi browser con diverse interfacce js (ad esempio XMLHttpRequestvs ActiveXObject, o addEventListenervs. attachEvent, o css selectorsvs xpath selectorsvs no selector support, ecc ...) Nei browser recenti la maggior parte di questi problemi non esistono perché seguono gli stessi standard.
inf3rno,

Risposte:


89

Parliamo di macchine.

Oh aspetta, l'abbiamo già fatto - ricordi quella volta che ci siamo incontrati, qualche tempo fa? Abbiamo parlato di macchine. In effetti, sembravi essere un grande esperto di automobili. Sei stato in grado di spiegare, in dettaglio, tutto ciò che è giusto, sbagliato ed eccitante sull'ultima gara di Formula 1. Conoscevi a memoria tutti i modelli Lamborghini, inclusi prezzo e disponibilità. Avevi anche pensato di acquistare la tua Ferrari 599 GTB Fiorano e stavi risparmiando (scommetto che la cena con bistecca non è stata di grande aiuto).

Mentre spiegavi le colpe della Toyota con una grande voce eccitata, all'improvviso sei saltato dalla sedia e hai urlato in aria, agitando i pugni: "Accidenti, sono un magnifico esperto di tutto ciò che riguarda le automobili! sarò un meccanico! "

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

Ma come potrebbe essere !? Sai tutto di macchine! Tranne per ... tutto sulle macchine. Puoi ben sapere che la tua auto dei sogni ha un motore V12, ma non sai cosa significhi effettivamente.

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

Ora lascia che te lo chieda. Come $.fn.textfunziona? E che dire $.fn? Cosa significano veramente? In che modo $(something)restituisce una cosa gigantesca che contiene cose e che cosa è esattamente quella cosa? Riesci a replicare la loro funzionalità, almeno un po ', anche in teoria? Riesci a farcela senza jQuery?

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

Come seconda analogia per questa risposta: jQuery è quello di JavaScript-DOM (non JavaScript la lingua, solo il DOM) come Array.prototype.forEachè quello for. Funziona, per il 99% dei casi. E funziona bene. Ma per questo 1% che non è coperta, è necessario sapere come utilizzare il forciclo, se non altro per essere pratico. L'intera risposta si basa 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é adoro JavaScript e quando le persone sembrano semplicemente buttarlo da parte dicendo casualmente "pah, quei sciocchi javascriptiani" e sventolando fantasiosi guanti bianchi, si scende alla moralità.

Se riesci ad 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 scegliere almeno tra usare jQuery (o qualsiasi altra libreria) e non usare una libreria. Impara il DOM. Impara come usarlo. Scrivi la tua piccola libreria o solo una raccolta di funzioni di supporto. E una volta che conosci il DOM e scegli di usare jQuery - godspeed. La pigrizia è premiata per coloro che hanno lavorato duramente.


15
Una lunga divisione è ancora difficile!
Raynos,

13
@anonymousDownvoter Pray spiega. È perché sei vegetariano? Posso cambiare la bistecca in tofu-hamburger, ma non posso dire onestamente che esiste un "ottimo tofu-hamburger"
Zirak,

10
+1 "In che modo $ (qualcosa) restituisce un oggetto gigantesco contenente cose, e che cosa è esattamente questo oggetto?" Hah!
ThinkingStiff

3
Inoltre, @Mike è criminale, questo non ha mai ottenuto uno status di risposta perché è puro! @ # $ Ing genio.
Erik Reppen

5
"ottima bistecca" nel post è un errore di battitura volontario, non tentare di modificarlo. Se necessario, fai riferimento a questa meta discussione al riguardo
moscerino

12

Ragioni che conosco:

  1. Quando il bisogno è estremamente minimo, dire 1 su clic.

  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 è meglio.

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


13
Mi chiedo quanto spesso il numero 2 sia effettivamente vero. Si salva un download di 92 KB, potenzialmente memorizzato nella cache, ma si finisce per scrivere molto più codice JS sulla piastra di caldaia.
Adam Rackis,

4
Non lo so. È possibile mantenere JS come desiderato , anziché includere l'intera libreria per un sottoinsieme della funzionalità.
Ryan Kinal,

4
@Ryan Kinal - Adam Rackis ha un buon punto e, se usi l'API di Google per caricare Jquery, puoi caricarlo dallo stesso posto in cui l'utente probabilmente lo ha già recuperato.
Ben DeMott l'

Non sono d'accordo con il n. 4. Se il codice legacy è orribile e tutti nel team sono d'accordo ed è una buona idea aggiungere jQuery e usarlo nel codice futuro.
ThiefMaster,

7

jQuery è semplicemente un framework: un set di strumenti scritti in JavaScript. Usando quel set di strumenti stai ancora usando JavaScript. Alcune persone preferiscono scrivere JavaScript utilizzando 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 si caricano più velocemente senza includere file jQuery extra
  • Alcuni framework potrebbero essere incompatibili con jQuery
  • Il codice in fase di scrittura non fa nulla per cui jQuery aiuta
  • Il codice è stato scritto per essere utilizzato da altri, e richiedere jQuery come dipendenza renderebbe più difficile la condivisione
  • L'autore del codice desidera un controllo maggiore di quello fornito da jQuery

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 di jQuery e non nel mio codice (un'occasione rara, ma non così rara).

A parte questo, non trovo altri motivi per non usarlo:

  • Il sovraccarico è minimo, soprattutto se utilizzi la versione di Google ospitata ,
  • Aiuta gli sviluppatori Javascript meno esperti a scrivere codice più pulito ed efficiente,
  • Per lo più multipiattaforma, il che può salvare la vita quando devi gestire browser più vecchi,
  • L'enorme galleria di plugin 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, potresti inizialmente scappare con una biblioteca ma alla lunga pagherai.

E naturalmente ci sono tutti noi che siamo stati bloccati in combattimenti mortali con IE6 per alcuni anni, e non lasceremo facilmente andare i nostri trucchi della vecchia scuola a favore di un nuovo giocattolo luccicante.


2
Usi i plugin jQuery? La maggior parte di loro non è orribilmente buggy e piena di codice lento e cattivo?
Raynos,

@Raynos The huge gallery of plugins help me write prototypes in very short times... Solo prototipi, li evito sul codice di produzione quando possibile. Ci sono alcuni plugin con un codice eccellente ovviamente, ma devi cercare molto per loro ...
yannis,

prototipi generalmente significa "avrebbe dovuto essere buttato via ma ora è un codice di produzione". Se li usi su prototipi usa e getta, allora va bene.
Raynos,

@Raynos Prototyping non riguarda solo prototipi usa e getta. La prototipazione evolutiva è un processo fondamentale dello sviluppo web ... - come va, per una risposta tardiva: P
yannis

"La prototipazione evolutiva" si chiama "taglia ora enormi angoli e spero che guadagneremo di più facendo così il costo di tutto quel debito di codice che otterremo". Il che, naturalmente, è valido solo se ti trovi in ​​quella magica finestra temporale di cui hai bisogno per far sì che la tua azienda abbia successo. È un prestito.
Raynos,

5

Nell'ambiente browser è necessario uno strumento di normalizzazione tra browser. Tale strumento è disponibile in due gusti

  • avvolge gli oggetti host con nuovi oggetti che si comportano allo stesso modo tra i browser
  • estendere gli oggetti host per implementare l'API DOM.

In genere è possibile utilizzare queste utilità in tre modi

  • usa piccole funzioni come addClasso in setTexttutto il codice quando e dove ne hai bisogno
  • scrivere la propria libreria di normalizzazione tra browser
  • usane uno esistente.

È necessario un meccanismo di normalizzazione, altrimenti non si ottiene il supporto zero tra browser.

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


3

Se non hai bisogno di astrazione DOM, supporto cross-browser e browser legacy, puoi facilmente andare senza jQuery.

Questo è il caso in cui si stanno sviluppando estensioni del browser, script greasemonkey (a volte), elementi che riducono il numero, sviluppando per Node.js o altri ambienti non browser.


2

Insieme alle altre risposte qui, specialmente quelle di Michael Durrant , avrei visto la velocità è un importante motivo per me di tanto in tanto la scelta di utilizzare prime JavaScript.

Ultimamente ho lavorato su molte animazioni o altre attività ad alta intensità di CPU e alcune volte JavaScript non elaborato è molto, molto più veloce rispetto a jQuery.

Un esempio è quello in cui volevo cambiare l'opacità di un position: fixedelemento in relazione alla distanza di scorrimento di un utente in una pagina. L'effetto era troppo lento quando ho usato jQuery per questo, facendo sì che lo scorrimento fosse a scatti e l'effetto di dissolvenza era rovinato. Sono passato all'utilizzo di JavaScript diretto e tutto è stato liscio come la seta in tutti tranne IE <= 8.


2

Devo prefigurare la mia risposta con una certa onestà. Adoro 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 ...

Sì, è possibile aggiungere plug-in
Sì, è possibile estendere i selettori
, semplifica l'animazione

ma jQuery non fa tutto

Hai mai provato a lavorare in più contesti di finestre con jQuery? jQuery fa schifo nel gestire diversi contesti di finestre perché conserva l'originale windowe il documentcontesto dalla finestra in cui è stato chiamato.

Ho scritto un po 'di codice qua e là per creare dei popout * e jQuery può semplicemente ostacolare ciò che sto cercando di realizzare. L'aggiunta di un nuovo riferimento a jQuery nella finestra figlio può spesso peggiorare le cose rendendo più difficile stabilire quale contesto jQuery viene utilizzato.

* pensa al pop-up di Gmail per la composizione di un'email in una nuova finestra, non per la pubblicità spam

Usalo quando semplifica il codice

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

Il momento di non usare jQuery è quando non renderà il tuo codice più semplice, più breve, più leggibile o più veloce. Se è necessario ottimizzare i tempi di caricamento, potrebbe non essere necessario utilizzare jQuery a causa dell'overhead dell'evento.


2

Come saprai, jQuery è un framework generico che offre molti metodi che molti di noi non usano nei nostri progetti. (Alcuni di quelli che non ho usato affatto.)

Esistono due motivi principali per non utilizzare jQuery o altri framework ben consolidati.

1. Il progetto non è abbastanza grande o complesso per utilizzare un tale framework: in questo caso, il programmatore 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 suo framework JavaScript. Il motivo per cui citano è che se stanno usando jQuery e c'è qualche bug da risolvere, devono aspettare fino alla prossima versione. Inoltre, se c'è una funzione da aggiungere, devono chiederla al team jQuery o aggiungere un plug-in anche se renderlo un plug-in non sarà una buona idea (hanno dato l'esempio di aver usato .livequalcosa di simile nei loro framework anche 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 framework si gonfia e aumenta solo il tempo per mantenerlo.


0

Mike

Penso che le persone si sottraggano all'utilizzo di alcune biblioteche a causa della dipendenza da quella soluzione infrastruttura / biblioteca per eseguire alcune attività.

Ma stiamo attenti a ricordare che le lingue vanno e vengono come librerie a lungo termine.

Quindi forse è portata temporale. Forse le persone sono titubanti nell'investire in una biblioteca che potrebbe non esserci - o che hanno un tale slancio a lungo termine.

Me stessa? Non ho alcuna obiezione all'utilizzo di JQuery in particolare. Guardo anche Box2d.js o three.js e preferirei piuttosto abbracciarli anche se a breve termine piuttosto che perdere i frutti che hanno da offrire.

La linea di fondo di Mike è che c'è un rischio nella durata di conservazione di una libreria scelta, e penso che alcuni nella comunità javascript potrebbero aver subito perdite a causa della fine di una libreria o di un progetto e potrebbero aver appena detto - mai più.


0

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

Sta arrivando al punto che semplici esempi javascript stanno diventando difficili da trovare. Niente contro jQuery; è un ottimo quadro. Ho avuto molte buone idee da esso, 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 reinventare la ruota a volte, ma il controllo totale e il controllo delle correzioni di bug è un enorme vantaggio a condizione che tu sia disposto a mettere il lavoro nell'apprendimento di JavaScript.

Non solo quello. Conoscere JavaScript vaniglia rende molto più divertente giocare e sperimentare le nuove funzionalità invece di attendere un'implementazione basata su framework. Inoltre, non incolpo jQuery per questo in quanto si tratta principalmente di una libreria DOM , ma può essere un problema scalare con progetti di grandi dimensioni. Altri framework fanno un lavoro migliore in questo; Prototipo viene in mente il .

In breve, è un ottimo quadro, ma non la cosa comune a tutti.


2
La tua risposta sarebbe più forte se fosse meno rantesca e focalizzata maggiormente sui dettagli.

questo post è piuttosto difficile da leggere (wall of text). Ti dispiacerebbe modificarlo in una forma migliore?
moscerino del

0

Posso aggiungere altri due motivi che non sono stati menzionati:

  1. Quando raccolgo nuove tecnologie, molte volte, inizierei con costrutti di livello inferiore prima di passare a quelli di livello superiore. Sono principalmente uno sviluppatore C ++ / C #, ma un po 'di tempo fa, quando ho iniziato a giocare con HTML / CSS / JavaScript, ho scelto di non utilizzare alcun framework perché volevo prima capire la tecnologia (ovvero JavaScript linguaggio stesso) su cui sono basati tali framework.

    • Detto questo, da allora ho scoperto jQuery e non vorrei mai tornare a scrivere a mano 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 / linguaggio, la loro prima risposta è "non un'altra API per me imparare!" A loro non importa quanto sia facile jQuery, ma semplicemente lo vedono come un ostacolo tra loro e consegnare lavoro usando i loro metodi "veri e provati". Questa è la stessa categoria di persone che si rifiutano di usare la libreria Boost o una qualsiasi delle STL e continuano a usare 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.


1
Le persone scelgono JavaScript puro su jQuery perché jQuery è un livello di astrazione orribile che non è necessario.
Raynos,

Certo che lo è, nasconde le differenze tra i browser e questa è una grande cosa da sola
Kos,

@Raynos: Non sono un vero esperto di tecnologia web e non mi diletto, quindi non posso davvero difendere jQuery. Ma da quel poco che ho visto è stato molto buono con me. jQuery aggiunge un altro strumento alla tua casella degli strumenti. Puoi usarlo tanto o quanto meno vuoi. Non ti ha mai impedito di scrivere Javascript puro quando necessario. Allo stesso tempo, ci sono cose che può fare con poche righe di codice che ti richiederanno giorni per scrivere, quindi se funziona, usa quelle 2 righe. In caso contrario, ruota il tuo. Dire che tutto è orribile è come comprare un cacciavite e poi lamentarsi che è un ...
DXM,

... strumento orribile per martellare i chiodi perché l'impugnatura non ha abbastanza peso
DXM,

1
Non hai bisogno di jQuery . I browser hanno questa API chiamata DOM che ti consente di fare tutto ciò che desideri. I problemi tra browser possono essere risolti utilizzando polyfill. jQuery è una libreria mediocre e una soluzione mediocre al supporto del browser legacy.
Raynos,

-1

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

Cosa rende preferibile utilizzare jQuery:

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

JavaScript è una lingua mentre jQuery è una libreria scritta usando JavaScript.

Ecco alcuni motivi che rendono preferibile l'uso di JavaScript piuttosto che jQuery:

  1. Carica l'intera libreria di script jQuery ogni volta con la pagina. È un inconveniente per il sito Web di elaborazione delle query peed / fast.
  2. A volte il crollo / conflitto del framework jQuery con altri framework.
  3. Se stai scrivendo un semplice codice per selezionare un elemento e mostrare alter, JavaScript nativo è molto meglio.
  4. Se le operazioni sono piccole ed eseguite in poche righe di codice JavaScript, non è consigliabile utilizzare jQuery.

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

Anche se vuoi estenderli, devi scrivere codice in JavaScript. Anche questo è un grande discorso. Gli sviluppatori dipendono da queste librerie, quindi per avere il controllo sui progetti, JavaScript è meglio dell'uso dei framework.


1
"gestisce molto bene le manipolazioni del DOM" Lol COSA?
Incognito,

grazie @Incognito per farmi sapere questo .. Ma è molto meglio di altre librerie. keyframesandcode.com/resources/javascript/deconstructed
Niranjan Singh

1
Il link è decisamente sbagliato. jQuery che supporta i selettori psudo-css tramite sizzle non ha nulla a che fare con il DOM.
Incognito,

bene va bene .. anche io ho imparato da te su queste cose .. puoi darmi qualche link o informazioni su queste cose .. ho aggiornato la risposta ..
Niranjan Singh,

yuiblog.com/blog/2006/10/20/video-crockford-domtheory è un buon inizio, quindi leggi le specifiche w3c sul DOM.
Incognito,

-4

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.