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


32

Sono uno sviluppatore web da quasi 10 anni e ho preso l'abitudine di provare a non usare JavaScript ogni volta che è possibile. Non sto parlando di costruire app Web qui, ma siti Web basati su database.

È un approccio buono / rispettato?


6
Disattivo javascript standard e noscript mi ​​dice da quali fonti javscripts sono caricati. Non è raro che un sito web carichi javascript da oltre 10 fonti secondarie, che a loro volta caricano anche javascript da fonti terziarie. E non è raro che una pagina carichi javascript da oltre 20 fonti esterne in totale. Quindi direi: minimizzare l'utilizzo di JavaScript è fuori dalla finestra.
Pieter B,

9
Ho osservato che più javascript su cui fai affidamento, meno il tuo sito sarà orientato alla navigazione e alla SEO. Non riesco a contare quanti siti Web ho lasciato a causa di "collegamenti javascript" e simili.
BiAiB,

1
Ho scoperto che c'è molto javascript su internetz. I problemi sono: 1) gli indicizzatori semplici non capiscono js, ​​2) una grande quantità di js brucia la CPU 3) alcune piattaforme non hanno ancora js (telefoni, link browser). Quindi, evitare js quando non necessari è una buona pratica.
permeakra,

Perché questa domanda della settimana? Vorrei che ciò non fosse chiaro e non costruttivo. In generale, "dovrei usare X?" le domande non sono apprezzate su questo sito. Forse qualcuno può illuminarmi.
Mark E. Haase,

Lo stack Web Microsoft (finora con MVC) ha fatto affidamento su JS per OGNI SINGOLO PULSANTE CLIC in ASP.NET e SharePoint. Quindi no, non è comune minimizzare l'utilizzo.
Graham,

Risposte:


51

È l'istinto della maggior parte dei programmatori di ridurre tutti i tipi di codice. Meno codice, meno complessità e meno punti di possibile errore in detto codice. Questa regola si applica a Javascript così come ad 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.


9
Evitare JavaScript è una questione diversa dall'istinto generale per evitare più codice. Con JS non si tratta solo di ridurre la complessità dello sviluppo; ci sono problemi reali di compatibilità con i tuoi utenti.
jhocking

34

10 anni fa, potrebbe essere stata una buona idea. Oggi la maggior parte delle parti di Internet (- almeno alcune parti molto popolari -) sono diventate quasi inutilizzabili, o forniscono solo una funzionalità molto limitata, quando si disabilita Javascript nel browser. Quindi IMHO oggi puoi aspettarti che Javascript sia abilitato per i tuoi utenti.

E ci sono molti framework come JQuery per aggirare le incompatibilità del browser. IMHO non esiste un vero motivo per cui dovresti limitarti a non utilizzare Javascript per il tuo sito Web - l'unico motivo potrebbe essere che non hai alcun uso per esso.

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

EDIT2: sicuramente per ogni sito Web, si deve trovare un equilibrio tra facilità d'uso, facilità di ricerca e sviluppo. IMHO oggi Javascript può aiutare a migliorare questo equilibrio, se usato con saggezza. Detto questo, penso che non sia più necessario minimizzare oggi l'utilizzo di Javascript per mantenere questo equilibrio. Usalo con cura e non demonizzarlo.


17
Eccone alcuni: SEO, aggregatori web, screen reader, NoScript, curl, browser mobili. Disattivo gli script per impostazione predefinita e la maggior parte di Internet funziona ancora bene.
martedì

7
Se un sito non è utilizzabile senza javascript, non può essere efficacemente sottoposto a scansione da Google e può essere o meno utilizzabile in un contesto RESTful. Anche Facebook è almeno minimamente utilizzabile senza javascript
GordonM,

9
Sono d'accordo con la maggior parte di ciò che viene detto qui, ma sono fortemente contrario all'idea che un sito dovrebbe essere "almeno minimamente utilizzabile senza JavaScript". È sbagliato: dovrebbe essere utilizzabile al massimo senza JavaScript.
Jörg W Mittag,

4
@ JörgWMittag se hai intenzione di disabilitare una tecnologia web, non dovresti aspettarti di ottenere tutti i vantaggi del sito Web. Gli scenari differiscono, ma se sto costruendo un'app Web probabilmente non sto sprecando il mio tempo a costruire in piena compatibilità per una minoranza dei miei utenti che si rifiutano di passare al 21 ° secolo. Simile a come non supporto IE 6 nella maggior parte dei miei progetti.
Tom Marthenal,

2
È solo professionale supportare tutti i casi d'uso. Se lo hai perso, va bene, tutti sbagliano di tanto in tanto, ma trascurarli è un problema diverso. Sono pronto a sviluppare siti Web al 100% SENZA JS e, dopo averlo fatto funzionare, aggiungo JS per semplificare le attività e migliorare la UX.
Spidey,

13

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

Esistono anche software specializzati per la navigazione web in cui JavaScript non è disponibile o non funziona come previsto. Software di lettura dello schermo o Braille utilizzato dai non vedenti, ad esempio. Ci sono anche ambienti in cui la memoria è limitata e avere grandi quantità di javascript può rendere l'esperienza di navigazione spiacevole o addirittura poco pratica, come i browser degli smartphone.

Dovresti esaminare il concetto di "miglioramento progressivo", in cui costruisci un sito per funzionare senza javascript, quindi aggiungi un livello javascript in cima per migliorare l'esperienza dell'utente. In questo modo avrai un sito almeno utilizzabile da persone senza javascript.

Non devi cercare di fornire tutte le possibili funzionalità che stai pianificando di implementare con browser JavaScript per browser non JavaScript, ma è comunque importante lasciare almeno i casi d'uso di base disponibili senza JavaScript. Essere in grado di navigare nel sito è ovviamente in cima alla lista, ma se stai costruendo un sito di e-commerce, rendere il processo di pagamento dipendente da JavaScript sarebbe sciocco in quanto potrebbe costarti le vendite.


4
Assolutamente. Javascript dovrebbe essere usato come spezia, non come piatto principale.
hlovdal

9

Le altre risposte sembrano concentrarsi su "se non dovessi mai usare JavaScript", quindi penso che manchino il punto. Non dovresti usare JavaScript se non ti serve. Alcune persone usano JavaScript per tutto :

  • Effetti al passaggio del mouse (dovrebbe essere CSS)
  • AJAX (dovrebbe avere hrefquando ragionevole)
  • Posizionamento (dovrebbe essere CSS)

I vantaggi sono cose come:

  • Il sito viene visualizzato più velocemente
  • Il CSS è significativamente meno complesso di JavaScript il più delle volte
  • Avere hrefcollegamenti di backup aiuta i motori di ricerca, gli utenti che vogliono aprire collegamenti in altre schede e gli utenti che odiano JavaScript

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

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


1
Ricordo di aver ricevuto alcuni consigli molti anni fa, su (come all'epoca si chiamavano) Man Machine Interfaces: "Solo perché puoi, non significa che dovresti" Questa è una serie massima di siti Web con un'eccessiva animazione appariscente, suono e simili dovrebbero prendere in considerazione.
Andrew,

8

È una buona idea evitare funzionalità non necessarie, punto. Frame come jQuery rendono incredibilmente facile aggiungere fronzoli che potrebbero avere senso aggiungere, ma a volte no. Per esempio:

Hai davvero bisogno di animarlo?

... o ...

Attraversare l'intero DOM è davvero necessario per un selettore così banale? Potresti limitarlo usando il contesto, e ne abbiamo bisogno in primo luogo?

Non eviterei di usare JS, ma faccio attenzione a non essere odioso, mentre cerco macchine più lente. Lo stesso vale con alcune delle nuove fantasiose cose che otteniamo in CSS3 - come le ombre discendenti ... se usate in modo eccessivo possono rendere qualcuno su una macchina a bassa potenza un'esperienza davvero negativa.

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


6

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

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

La stessa domanda è stata posta su SO, ma non riesco a ricordare per amor mio dove.


5

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

  • Convalida. Deve essere fatto sul lato server. A volte nelle applicazioni Web esiste una rapida convalida lato client, ma da sola non è sufficiente.
  • Compiti estremamente importanti. Gli utenti possono scegliere di disabilitare gli script del proprio 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 impiegherà. Anche se piccole quantità di codice non avranno alcun effetto pratico.

JS ha un sacco di funzioni, che non possono essere sostituite dal codice lato server. A parte quelli sopra, non credo che ci sarebbero argomenti ragionevoli per limitare l'utilizzo di JS.


5

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

  1. Siti Web incentrati sul contenuto . Nel primo caso, le parole magiche sono "miglioramento progressivo"; limitare javascript a funzioni ridondanti che possono essere fornite con accessi classici al contenuto 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 delle librerie javascript più diffuse, accessi al desktop con mouse e / o tablet con multi-touch.

Il web come piattaforma software

I requisiti minimi di accesso sono OK se stai davvero creando un'applicazione: scegli come target una piattaforma specifica per ottenere funzionalità avanzate che altrimenti non potrebbero essere costruite. È proprio come sviluppare per Python o Java o .Net. Non lasciarti ingannare da parole d'ordine come HTML5 e dalla promessa di "correre ovunque"; puoi avere un codice portatile tra i dispositivi solo fintanto che l'intera piattaforma è supportata su quelli. Qualsiasi modifica allo stack di sviluppo e il software si interromperanno.

Quindi il prezzo da pagare è che stai seguendo un obiettivo mobile, poiché vengono rilasciate nuove versioni della piattaforma; dovrai giocare per recuperare il tempo per far funzionare la tua app mentre la piattaforma si evolve. L'unico vantaggio che ottieni è un meccanismo di consegna semi-universale per la tua app che non dipende da pacchetti o negozi di applicazioni; ma perdi la funzione 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 cliente, che può effettuare qualsiasi trasformazione desiderata prima della presentazione. Il sito dovrebbe avere accesso a un ecosistema di piattaforme diverse che possono o meno supportare gli standard attuali:

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

Li perderai tutti se hai bisogno dell'attuale razza di javascript, che è in continua evoluzione. In questo contesto, javascript non funzionante che impedisce l'accesso al contenuto è un peccato.

Tutti affermano che "l'utilizzo di javascript dovrebbe essere ridotto al minimo" sostiene questo stile. Va bene includere alcuni JS, intendiamoci, ma tutte le funzioni dovrebbero essere ridondanti con accessi di base al contenuto che potrebbe essere ottenuto sul lato server:

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

Il vantaggio di questo approccio sono meno test e upgrade richiesti e maggiore durata. 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 qualche valore di archiviazione, trarrai vantaggio a lungo termine dall'uso del Web come sistema di distribuzione dei contenuti, non di piattaforma applicativa.


3

Lavoro per il mio governo statale e, di conseguenza, la maggior parte del mio sviluppo coinvolge siti Web interattivi basati sui dati. Interrogazioni 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 del modulo dovrebbe sempre avvenire sul lato server, mai sul lato client. Se tenti di convalidare i tuoi input sul lato client, tutto ciò che un hacker deve fare è creare una copia locale della tua pagina web e riscrivere Javascript per consentire ciò che desidera inviarti (iniezione SQL, ecc.). La convalida deve essere eseguita da qualche parte sotto il tuo controllo esclusivo, ovvero sul server.

2) Molti utenti disattivano Javascript o utilizzano un browser che potrebbe non implementarlo correttamente. Essendo il governo, dobbiamo supportare tutti, anche se stanno usando attrezzature davvero VERAMENTE vecchie. HTML funziona ovunque; Javascript, non così tanto. Non usando Javascript nelle tue pagine web, dai loro un ingombro davvero ridotto sul computer client, usando poche risorse. Ciò massimizza il numero di persone che possono accedere ai tuoi contenuti. Per lo stesso motivo, non dovresti diventare troppo pazzo con il tuo CSS. Mantieni la semplicità, mantienila pulita e lascia che le piccole signore anziane 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 lato server, tende ad essere piuttosto brutto. E i designer (che di solito sono gli sviluppatori web, se vuoi essere sincero a riguardo) tendono a non vedere il problema con il download di "script" da luoghi casuali sul web. Dicono cose come "perché reinventare la ruota?" e "Non inventato qui". Quindi, invece di scrivere il proprio codice, spesso escono e prendono qualcosa da un altro sito, pensando che se è su Internet è un gioco equo. Ci sono due problemi con questo: A) potrebbero inavvertitamente pubblicare JavaScript dannoso che impiega un po 'di tempo a catturare, e B) potrebbero infrangere 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 deve contenere solo linguaggio di markup e CSS; lasciare che il lato server gestisca il sollevamento pesante.


2

Dipende.

Mentre ci si può aspettare che gli user agent desktop supportino ed eseguano il tuo javascript in modo significativo, non tutti gli user agent sono browser desktop grafici e devi decidere se desideri soddisfarli.

Esempi inclusi:

  • motori di ricerca (Google ne esegue alcuni javascript, ma certamente non tutti, e se fai affidamento su javascript per la navigazione, i robot di ricerca potrebbero non trovare tutti i tuoi contenuti)
  • aggregatori e raschiatori
  • browser basati su testo (tuttavia, non molte persone li usano)
  • screen reader e altri ausili per la lettura
  • (alcuni) browser mobili

La mia regola empirica è che se si tratta di un'applicazione web per utenti regolari (interni, di comunità, quel genere di cose), fare affidamento su JavaScript è OK, ma se si desidera essere accessibili e reperibili pubblicamente, almeno il vitale la funzionalità dovrebbe funzionare in modo impeccabile senza javascript e dovresti fallire con grazia quando ne hai bisogno, piuttosto che mostrare un comportamento "indefinito".


2

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

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

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


1

Dalla mia esperienza c'è stato un momento in cui le aziende disabilitano JavaScript per politica. Ma questa volta è andato molto lontano. Attualmente ho creato alcune grandi applicazioni intranet e applicazioni web per le più grandi aziende globali. Per tutte le applicazioni, l'uso 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 sempre per alcune attività molto piccole come il calcolo o qualcosa del genere non è un'opzione per la maggior parte delle aziende.

Quando pensiamo alle situazioni attuali nelle aziende più grandi, c'è un altro indicatore del motivo per cui 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 Drupal o altri e così via. Tutti questi sistemi si basano su JavaScript. Senza javascript la maggior parte dell'applicazione non funzionerebbe, come previsto dall'utente.


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 in molte organizzazioni oggi.

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


3
Penso che questa opinione sia totalmente superata. La maggior parte delle aziende utilizza SharePoint o CQ per soluzioni intranet. Entrambi i sistemi si affidano davvero a JS.
Smokefoot,

Rifiuto assolutamente che "la maggior parte delle aziende" utilizza Sharepoint ... e anche per quelle aziende che consentono JS internamente, le impostazioni Intranet possono essere diverse da quelle esterne.
Andrew

0

Come la maggior parte delle risposte qui spiegano, l'uso javascriptnon è dannoso. Se vuoi salvare la tua codifica e il codice sorgente dall'aspetto disordinato, prova coffee-scripta risparmiare molto sforzo nella digitazione javascript.

http://coffeescript.org/

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.