È prassi comune ridurre al minimo l'utilizzo di JavaScript durante la creazione di un sito Web? [chiuso]

32

Sono stato uno sviluppatore web da quasi 10 anni e ho preso l'abitudine di provare a non usare JavaScript quando possibile. Non sto parlando di creare app web qui, ma siti web basati su database.

Questo è un approccio valido / rispettato?

    
posta Ryan 29.08.2012 - 08:00
fonte

14 risposte

51

È l'istinto della maggior parte dei programmatori di ridurre gli tutti tipi di codice. Meno codice, meno complessità e meno punti di errore possibile in detto codice. Questa regola si applica a Javascript altrettanto bene come in altre lingue. Stai solo sostenendo la tradizione.

Usa Javascript come necessario / desiderato nelle pagine HTML ... ma non c'è motivo di usarlo quando non è effettivamente necessario.

    
risposta data 29.08.2012 - 08:58
fonte
34

10 anni fa, sarebbe stata una buona idea. Oggigiorno la maggior parte di Internet (- almeno alcune parti molto popolari) - sono diventate quasi inutilizzabili, o forniscono solo una funzionalità molto limitata, disabilitando Javascript nel browser. Quindi oggi IMHO puoi aspettarti che i tuoi utenti abbiano Javascript abilitato.

E ci sono molti framework come JQuery per aggirare le incompatibilità del browser. IMHO non c'è una vera ragione per cui oggi dovresti limitarti a non usare Javascript per il tuo sito web - solo la ragione potrebbe essere che non ne hai alcuna utilità.

EDIT: una domanda diversa è: Se dovresti fornire alcune funzionalità minime del tuo sito web quando i tuoi visitatori non hanno JS abilitato - questa è soprattutto una buona idea, per le ragioni che alcuni dei commentatori hanno sottolineato.

EDIT2: sicuramente per ogni sito web, si deve trovare un equilibrio tra facilità d'uso, ricerca-motore-amichevole e sforzo di sviluppo. IMHO oggi Javascript può aiutare a migliorare questo equilibrio, se usato con saggezza. Detto questo, penso che non sia necessario in generale ridurre al minimo l'uso di Javascript per mantenere questo equilibrio. Usalo con cura e non demonizzarlo.

    
risposta data 29.08.2012 - 08:33
fonte
13

Avere un sito che può essere utilizzato senza JavaScript significa che è disponibile per il pubblico più ampio possibile. Se è vero che la maggior parte dei browser supporta JavaScript e la maggior parte degli utenti la lascia per impostazione predefinita, non si può certo contare su di essa. Dopo tutto, non tutto ciò che accede al tuo sito è un browser; se vuoi che il tuo sito sia indicizzato correttamente dai motori di ricerca come Google, GoogleBot deve essere in grado di navigare nel tuo sito senza JavaScript.

Ci sono anche pezzi specializzati di software di navigazione web in cui JavaScript non è disponibile o non funziona come previsto. Ad esempio, il software di lettura dello schermo o Braille utilizzato dagli ipovedenti. Esistono anche ambienti in cui la memoria è vincolata e avere una grande quantità di javascript può rendere l'esperienza di navigazione spiacevole o persino poco pratica, come i browser per smartphone.

Dovresti esaminare il concetto di "miglioramento progressivo", in cui costruisci un sito in cui lavorare senza javascript, quindi aggiungi un livello javascript in alto per migliorare l'esperienza utente. In questo modo avrai un sito che è almeno utilizzabile per le persone senza javascript.

Non è necessario sforzarsi di fornire tutte le possibili funzionalità che si prevede di implementare con JavaScript per i browser non JavaScript, ma è comunque importante lasciare almeno i casi d'uso di base disponibili senza JavaScript. Essere in grado di navigare il sito è ovviamente in cima alla lista, ma se stai costruendo un sito di e-commerce, rendere il processo di checkout basato su JavaScript sarebbe sciocco in quanto potrebbe costarti delle vendite.

    
risposta data 29.08.2012 - 09:37
fonte
9

Le altre risposte sembrano concentrarsi su "non dovrei mai usare JavaScript", quindi penso che manchi il punto. Non dovresti usare JavaScript se non ne hai bisogno. Alcune persone usano JavaScript per tutto :

  • Effetti al passaggio del mouse (dovrebbero essere i CSS)
  • AJAX (dovrebbe avere href quando ragionevole)
  • Posizionamento (dovrebbe essere CSS)

I vantaggi sono cose come:

  • Il sito viene visualizzato più rapidamente
  • CSS è significativamente meno complesso di JavaScript la maggior parte del tempo
  • Avere dei link di backup href aiuta i motori di ricerca, gli utenti che vogliono aprire link in altre schede e gli utenti che odiano JavaScript

Ovviamente, AJAX è molto interessante, così come le pagine dinamiche, quindi non buttare via quelle cose solo perché alcune persone non ne hanno bisogno.

Il mio punto è: imparare a fare cose senza JavaScript è buono, minimizzare JavaScript è buono, e avere un backup per quando JavaScript non funziona è buono, ma non c'è motivo di evitare le funzionalità perché richiedono JavaScript.

    
risposta data 29.08.2012 - 17:23
fonte
8

È una buona idea evitare funzionalità inutili, punto. I framework come jQuery rendono incredibilmente facile aggiungere fronzoli che possono avere senso aggiungere, ma a volte no. Ad esempio:

Do you really need to animate that?

... o ...

Is traversing the entire DOM really needed for such a trivial selector? Could you limit it using context, and do we need that in the first place?

Non vorrei evitare usando JS, ma mi prendo cura di non essere antipatico, mentre cerco macchine più lente. Lo stesso vale per alcune delle fantasiose novità che otteniamo in CSS3 - come le ombre esterne ... se usate in modo eccessivo possono far sì che qualcuno su una macchina a basso consumo abbia una brutta esperienza.

L'eccezione a questa potrebbe essere la scrittura di controlli front-end per vari tipi di appliance, in cui devono assolutamente funzionare con JS disabilitato (forse una rigida politica di sicurezza su una rete di gestione di data center non richiede JS). Quindi quanto sopra dovrebbe essere preso nel contesto con qualsiasi requisito tu abbia.

    
risposta data 29.08.2012 - 08:48
fonte
6

Credo che essendo uno sviluppatore web relativamente nuovo e giovane (circa 4 anni), ho dovuto fare molte ricerche su questo perché javascript è ovunque.

Quello che cerco di fare sui miei progetti è quello di assicurarmi che il sito funzioni senza javascript, quindi aggiungere javascript dove ha senso (validazione lato client, miglioramento dell'interfaccia utente, ecc.). È una sorta di miglioramento progressivo e si occupa di SEO, javascript disabilitato e incompatibilità di browser meno recenti.

Questa stessa domanda è stata posta su SO, ma non posso per amore di me ricordare dove.

    
risposta data 29.08.2012 - 11:34
fonte
5

L'utilizzo di JavaScript può essere limitato in diversi casi:

  • convalida. Deve essere fatto sul lato server. A volte nelle applicazioni web c'è una rapida convalida sul lato client, ma da sola non è sufficiente.
  • Attività estremamente importanti. Gli utenti possono scegliere di disabilitare gli script dei loro browser, quindi il codice JS non funzionerà affatto. Se vuoi essere sicuro che qualcosa funzionerà in ogni caso su qualsiasi browser, non fidarti di JS.
  • Velocità. Il codice JS deve essere inviato al client e più codice scrivi, più tempo ci vuole. Sebbene piccole quantità di codice non abbiano alcun effetto pratico.

JS ha un enorme numero di funzionalità, che non possono essere sostituite dal codice lato server. Oltre a quelli sopra, non penso che ci sarebbe alcun argomento ragionevole per limitare l'utilizzo di JS.

    
risposta data 29.08.2012 - 08:10
fonte
5

" Siti web basati su database " è la chiave per la risposta. Esistono due modi per creare siti Web e la quantità di Javascript consentita dipende da quale si sta utilizzando realmente. Puoi costruire:

  1. siti web incentrati sui contenuti . Nel primo caso, le parole magiche sono "miglioramento progressivo"; limita javascript a funzioni ridondanti che possono essere fornite con accessi classici ai contenuti tramite HTTP semplice.

  2. Applicazioni web . Per le applicazioni, invece, stai utilizzando il Web come piattaforma software. Le app si basano su alcune ipotesi sul software disponibile: browser moderni, ultime versioni di popolari librerie javascript, accessi desktop con mouse e / o tablet con multi-touch.

Il Web come piattaforma software

I requisiti minimi di accesso sono OK se stai realizzando un'applicazione: hai scelto una piattaforma specifica per ottenere funzionalità avanzate che altrimenti non potrebbero essere costruite. È come sviluppare per Python o Java o .Net. Non lasciare che buzzwords come HTML5 e la promessa di "correre ovunque" ti ingannino; puoi avere un codice portatile tra i dispositivi solo finché l'intera piattaforma è supportata su quelli. Qualsiasi modifica allo stack di sviluppo e il software si interromperà.

Quindi il prezzo da pagare è che stai seguendo un obiettivo mobile, in quanto vengono rilasciate nuove versioni della piattaforma; dovrai giocare al recupero per mantenere la tua app in funzione mentre la piattaforma si evolve. L'unico vantaggio che si ottiene è un meccanismo di consegna semi-universale per la tua app che non dipende da pacchetti o negozi di applicazioni; ma si perde la caratteristica principale che differenzia il web dai precedenti sistemi di computer in rete.

Il Web come consegna di contenuti

I siti web incentrati sui contenuti sono una bestia diversa; sono nella tradizione del classico World Wide Web. Il contenuto viene interpretato liberamente dal client, che può apportare qualsiasi trasformazione desiderata prima della presentazione. Ci si aspetta che il sito sia accessibile da un ecosistema di piattaforme diverse che potrebbero o meno supportare gli standard attuali:

  • Dispositivi mobili che supportano meno dei più recenti e costosi campanelli e fischietti
  • Vecchi utenti del browser che non possono (all'azienda) o non sanno (a casa) come aggiornare
  • Versioni future di motori popolari che deprecano le loro vecchie API

Li perderai tutti se richiedi la razza attuale di javascript, che è in continua evoluzione. In questo contesto, javascript rotto che impedisce l'accesso al contenuto è un peccato.

Tutti dicono che "l'uso di javascript dovrebbe essere minimizzato" sta sostenendo questo stile. Va bene includere alcuni JS, attenzione, ma tutte le funzioni dovrebbero essere ridondanti con gli accessi di base ai contenuti che potrebbero essere raggiunti dal lato server:

  • Convalida immissione dati
  • Aggiornamenti AJAX del contenuto per una navigazione più rapida (che tuttavia funziona senza JS)

Il vantaggio di questo approccio è il minor numero di test e aggiornamenti richiesti e una maggiore durata di conservazione. Le prime pagine Web statiche di 20 anni fa sono ancora sfogliabili in qualsiasi client Web, ma le prime applicazioni Web sono interrotte per sempre. Se il tuo sito ha un valore di archiviazione, a lungo termine potrai beneficiare dell'utilizzo del Web come sistema di distribuzione dei contenuti, non di una piattaforma applicativa.

    
risposta data 12.11.2012 - 16:17
fonte
3

Lavoro per il mio governo statale e, di conseguenza, gran parte del mio sviluppo riguarda siti Web interattivi basati sui dati. Domande su dati storici, invii di moduli, cose del genere. Manteniamo il nostro Javascript al minimo assoluto, per i seguenti motivi:

1) La convalida degli input dei moduli dovrebbe sempre avvenire sul lato server, mai sul lato client. Se tentate di convalidare i vostri input sul lato client, tutto ciò che un hacker deve fare è creare una copia locale della vostra pagina web e riscrivere il Javascript per consentire ciò che vuole mandarvi (SQL injection, ecc.). La convalida deve avvenire da qualche parte sotto il tuo controllo esclusivo, cioè sul server.

2) Molti utenti disattivano Javascript o utilizzano un browser che potrebbe non implementarlo correttamente. Essendo il governo, dobbiamo supportare tutti, anche se usano davvero attrezzature DAVVERO vecchie. HTML funziona ovunque; Javascript, non così tanto. Non utilizzando Javascript nelle tue pagine web, dai loro un ingombro davvero ridotto sulla macchina client, utilizzando poche risorse. Questo massimizza il numero di persone che possono accedere ai tuoi contenuti. Per lo stesso motivo, non dovresti diventare troppo matto con il tuo CSS. Mantieni la semplicità, mantienila pulita e lascia che le signorine vedano il tuo sito anche se il loro computer è stato acquistato nel 1999 (per inciso, riceviamo chiamate di supporto tecnico da persone come questa).

3) Javascript, essendo uno strumento preferito dagli "sviluppatori web" piuttosto che dai programmatori sul lato server, tende ad essere piuttosto brutto. E i progettisti (che di solito sono gli sviluppatori web, se si vuole essere onesti al riguardo) tendono a non vedere il problema con il download di "script" da posizioni casuali sul web. Dicono cose come "perché reinventare la ruota?" e "Non inventato qui". Così, invece di scrivere il proprio codice, spesso escono e afferrano qualcosa da un altro sito, pensando che se è su Internet è un gioco leale. Ci sono due problemi con questo: A) potrebbero inavvertitamente postare qualche Javascript dannoso che richiede un po 'di tempo per essere catturato, e B) potrebbero scontrarsi con il copyright di qualcuno e farti denunciare. Entrambe le situazioni devono essere evitate.

IN GENERALE, Javascript è una cattiva idea. Il codice lato client di QUALSIASI tipo è una cattiva idea. Il lato client dovrebbe contenere solo linguaggio di marcatura e CSS; lasciare che il lato server gestisca il sollevamento pesante.

    
risposta data 13.11.2012 - 18:05
fonte
2

Dipende.

Sebbene sia possibile che gli agenti utente desktop supportino ed eseguano il javascript in modo significativo, non tutti gli agenti utente sono browser desktop grafici e devi decidere se desideri soddisfarli.

Gli esempi includono:

  • motori di ricerca (Google esegue alcuni javascript, ma certamente non tutti, e se ti affidi a javascript per la navigazione, i robot di ricerca potrebbero non trovare tutti i tuoi contenuti)
  • aggregatori e scraper
  • browser basati su testo (non molti usano quelli, però)
  • screen reader e altri strumenti di lettura
  • (alcuni) browser per dispositivi mobili

La mia regola generale è che se si tratta di un'applicazione web per utenti regolari (in-house, community, quel genere di cose), fare affidamento su javascript è OK, ma se si vuole essere accessibili al pubblico e reperibili, allora a almeno la funzionalità vitale dovrebbe funzionare perfettamente senza javascript, e dovresti fallire con garbo quando ne hai bisogno, piuttosto che esibire un comportamento "indefinito".

    
risposta data 29.08.2012 - 08:55
fonte
2

L'approccio vecchio stile è completamente obsoleto. Ad esempio, ho fatto una cancellazione ajax per il moderatore su uno dei siti e lui è felice solo per l'evidente aumento di velocità.

Naturalmente lo sviluppatore può fare due versioni sia per gli utenti JS che per quelli non JS, ma nella maggior parte dei casi è estremamente costoso e non vale l'1-2% del pubblico del sito Web (se non si è Google, ovviamente ).

Quindi la mia risposta sarebbe NO - JavaScript è la risposta a molte domande sull'esperienza utente, perché non dovrei usarlo?

    
risposta data 29.08.2012 - 16:22
fonte
1

Dalla mia esperienza c'è stato un tempo in cui le aziende disabilitano JavaScript per policy. Ma questa volta è finita. Attualmente ho creato alcune grandi applicazioni intranet e applicazioni web per grandi aziende globali. Per tutte le applicazioni, l'utilizzo di JavaScript e JQuery faceva parte delle cose che il cliente si aspetta.

Costruire applicazioni per i clienti non è più solo velocità e sicurezza. Il cliente desidera concentrarsi sull'usabilità e sull'uso della tecnologia AJAX. Senza l'uso di JavaScript non funzionerebbe così bene. PostBack tutto il tempo per alcuni compiti molto piccoli come il calcolo o qualcosa del genere è per la maggior parte delle aziende non un'opzione.

Quando pensiamo alle situazioni attuali nelle aziende più grandi c'è un altro indicatore del perché JavaScript è attualmente un must. Guarda i sistemi CMS che sono attualmente in esecuzione nel mondo degli affari. La maggior parte utilizza Microsoft SharePoint o Adobe CQ, alcuni di essi Drupal o altri e così via. Tutti questi sistemi si basano su JavaScript. Senza javascript la maggior parte dell'applicazione non funzionerebbe, come l'utente se lo aspetta.

    
risposta data 29.08.2012 - 08:55
fonte
0

In passato, JavaScript veniva utilizzato e abusato e gli script erano (percepiti come) pieni di vulnerabilità e una fonte di malware.

Molte reti aziendali hanno risposto disabilitando JS, una politica che (giustamente o erroneamente) esiste ancora oggi in molte organizzazioni.

Molto semplicemente, suggerisco che nessun sito dovrebbe fare affidamento su JS per operare

    
risposta data 29.08.2012 - 08:15
fonte
0

Come la maggior parte delle risposte qui spiegate, l'utilizzo di javascript non fa male. Se vuoi salvare la codifica e il codice sorgente dall'aspetto disordinato, prova coffee-script che farà risparmiare molto sforzo digitando javascript .

link

    
risposta data 29.08.2012 - 11:56
fonte

Leggi altre domande sui tag