Mescolando jQuery con JavaScript

0

Ho appena chiesto questa domanda a SO su un po 'di bugginess che sto vivendo con jQuery e IE8 e qualcuno ha commentato che era inorridito che avrei mischiato JavaScript con jQuery (da allora ha cancellato il suo commento per qualche motivo).

Questa persona aveva un'alta reputazione, rispetto alla mia (3000+), quindi non voglio ignorare le sue critiche. Sono ancora relativamente nuovo allo sviluppo web e lavoro principalmente da solo, quindi non ero consapevole che questo potesse essere un problema. Perché si dovrebbe evitare di mescolare i due?

    
posta Community 08.11.2011 - 17:01
fonte

6 risposte

3

Il problema, e probabilmente il motivo del commento, sembra essere le righe con document.getElementById('firstName'); . jQuery può fare esattamente la stessa cosa, ed è generalmente "più sicuro", dal momento che gestisce le differenze tra i browser in modo piacevole.

La miglior regola da seguire è usare jQuery una libreria di manipolazione DOM di tua scelta (per molte persone, questa è jQuery) per manipolare il DOM e javascript per tutto il resto che devi fare .

    
risposta data 08.11.2011 - 17:07
fonte
14

Alla gente piace essere in bianco e nero.

Se utilizzerai uno strumento di normalizzazione cross browser, allora usalo. Non usarlo per normalizzare alcune cose ma non altre.

Esempio

var a = $("#foo");
var b = document.getElementById("bar");

Questi due dovrebbero non essere misti. O usi jQuery per i bug di bordo che ti interessano o usi il DOM per la velocità, ma non entrambi.

E sì, personalmente vorrei anche dire:

WTF, write your code more coherently, why are you mixing DOM calls with jQuery calls.

Come nota a margine, si può presumere che quando dice "javascript e jQuery" intende "chiamate all'API DOM direttamente in javascript e chiamate all'API DOM attraverso il livello di astrazione jQuery". Qualsiasi altro commento sarebbe disinformazione / troll.

    
risposta data 08.11.2011 - 17:13
fonte
5

Non sono sicuro da dove verranno queste critiche, visto che jQuery è javascript.

Il commento sembra essere stato cancellato, quindi è difficile dire esattamente di cosa si trattasse. Potrebbe essere più circa l'utilizzo di jQuery o javascript.

    
risposta data 08.11.2011 - 17:03
fonte
1

Alcuni programmatori tendono a pensare in termini di ciò che dice un tutorial o qualche guru programmatore.

Molto probabilmente, sarebbe più semplice avere lo stesso framework usato nella tua applicazione per rendere il codice più facile da leggere e capire.

Ma la maggior parte delle volte, i framework hanno limitazioni o bug, quindi non puoi mai applicare ciò che dice il tutorial o qualche guru del programmatore.

Immagino che il più importante sia soddisfare il cliente e spedire un'applicazione senza bug

    
risposta data 08.11.2011 - 17:08
fonte
0

Prima di tutto, non è jQuery vs JavaScript. È jQuery vs DOM API as-is che è crufty e brutto e un po 'ottuso, ma tradizionalmente più importante, supportato in modo non uniforme in modo significativo nei browser Microsoft prima di IE9. Ma è tutto JavaScript. Se ci stai pensando in un altro modo hai bisogno di aprire il cofano e imparare cosa fanno realmente gli interni di JQ.

E no, onestamente, non vedo quale sia il problema con l'utilizzo di entrambi. Se stai giocando con il DOM, dovresti conoscere il DOM. Una delle cose che mi piacciono di jQuery è che mi toglie di mezzo. Perché dovrei attivare un metodo per ottenere una proprietà che so essere disponibile in tutti i browser quando posso semplicemente fare riferimento a [0].someProperty invece per esempio? L'uso di entrambi non dovrebbe rendere più difficile per un altro utente della UI dev di modificare le tue cose se jQuery è nel mix perché non avrà mai problemi con te. In qualsiasi momento puoi racchiudere qualsiasi raccolta o oggetto dom in un wrapper di oggetti prodotto da $ semplicemente gettandolo come argomento della funzione $ e sei di nuovo in jQuery-land, quindi non è come se avessi reso il tuo codice più difficile per qualcun altro da modificare perché quella persona era meno a proprio agio con l'API nativa.

Ma dovrebbero essere in grado di leggere roba API DOM vanilla, se è compito loro di modificare le cose a quel livello, indipendentemente dal loro livello di comfort. Questa è solo la soglia della competenza tecnica per un vero UI-dev entry-level per quanto mi riguarda. In linea generale, naturalmente, può rendere il codice più leggibile per essere coerente nelle cose che fai, ma quando senti che c'è un motivo ragionevole per andare in un modo o nell'altro, non c'è motivo di non farlo. La chiave per prendere questa decisione è sapere molto su entrambi.

Nello scenario in cui qualcuno è veramente fuori di testa quando vede un mix di cose che accadono sia nel modo JQ che nel modo DOM API, è spesso un dev del lato server che non vuole guadare cose che in realtà non capiscono per riutilizzare il tuo codice quando sarai colpito dal prodigioso programmatore-bus assassino. In tale scenario, non dovrebbero nemmeno guardare queste cose per capire come riutilizzare il codice per l'implementazione su altre pagine o per impostare un comportamento alternativo. Dovrebbero guardare oggetti, metodi e fabbriche JavaScript generici che espongono una API coerente / facilmente documentata per fare cose come attaccare un sacco di widget UI di un determinato tipo in una pagina o impostare tutte le caselle combinate in un tabella per interrompere l'operazione di filtraggio automatico durante la digitazione. Tutte le cose del DOM dovrebbero essere sepolte e nascoste da persone che non hanno bisogno di saperlo.

E questo non dovrebbe essere difficile per te, se alla fine è tutto solo JavaScript per te.

    
risposta data 13.02.2013 - 12:55
fonte
-1

Preferisco mescolarli. Di solito inizio usando jQuery rigorosamente (o principalmente). Dal momento che le cose possono diventare piuttosto impegnative per la CPU con i progetti su cui lavoro ci sono circa 100 di widget. Trovo che scrivere in jQuery sia un ottimo inizio, ma quando voglio iniziare ad ottimizzare i miei prodotti, cambio molto di quello che posso su JavaScript. jQuery è ottimo, ma ovviamente il codice nativo è più veloce nella maggior parte dei casi.

    
risposta data 11.03.2015 - 22:56
fonte

Leggi altre domande sui tag