|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
[Javascript/HTML] Posizionamento script
Traendo spunto da questo articolo: http://www.html5rocks.com/en/tutoria...cript-loading/ vorrei bene capire una questione sul caricamento degli script.
Mi pare di capire, dopo aver letto l'articolo, che alla fine della fiera se si vuole creare una pagina e inserirci degli script senza rallentare il caricamento di questa è opportuno inserire gli script al fondo della pagina, prima del <body/>, invece che nell'head: questo se si cerca un'implementazione che vada bene a tutti i browser. Tuttavia, mi domandavo quale fosse il significato di questa manovra se, per esempio, utilizzo un framework come jQuery e racchiudo tutto il mio codice dentro il famoso: Codice:
$(document).ready() Codice:
$(window).load()
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
con document ready aspetta solo che il DOM sia pronto.
con window load aspetta anche immagini ed elementi grafici, almeno io sapevo cosi. riguardo la domanda se è ancora necessario utilizzarlo, pur mettendolo alla fine della pagina, trovi una risposta sensata qui: http://stackoverflow.com/questions/1...ready-function in sostanza dice che se metti lo script a fine pagina non è necessario usare document ready in quanto arrivati a quel punto il DOM è già caricato. discorso diverso per plugin o script da caricare in posizioni diverse. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Quote:
Quindi ne deduco che quell'articolo sia per chi scrive ancora in JS pure senza fare uso di frameworks..
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
scusa ma non ho capito cosa intendi.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Ho sbagliato a scrivere, non pure, puro
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2010
Città: Londra
Messaggi: 620
|
Quote:
la $ da sola non vuol dire niente in javascript. quindi come ti dicevo , sia che tu usi jquery sia che non lo usi, se metti lo script alla fine del documento (prima del /body) non ti serve fare document.ready o window.load nel caso si tratti qualcosa che deve agire sul DOM in quanto a quel punto è già caricato. se si tratta di immagini, plugin o quant'altro discorso diverso. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Il punto secondo me è un altro, ed è spiegato all'inizio dell'articolo in "My first script include"
Quote:
Insomma, quando si includono molti file può essere una buona idea valutare queste ottimizzazioni. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Piccola premessa: ritengo che oggigiorno, l'utilizzo di un framework js sia indispensabile. Credo che solo un pazzo voglia far uso del JS puro, o in casi applicativi MOLTO particolari.
Dunque, do per scontato che si utilizzi un framework come jQuery o altro, per lo scripting. Perciò, se ho ben capito, qui si sta parlando di scaricare in locale lo script, che è ciò che blocca il browser? Perchè se si trattasse di uno script in jQuery, quasi sempre ( assolutamente sempre?? ) c'è un document.ready a fermare l'esecuzione, quindi, in questo caso, il problema di fondo si riduce ad un semplice download dello script... Come dice wingman87, anche il framework jquery deve essere scaricato ma, come si legge nell'articolo, i nuovi browser eseguono download in parallelo degli elementi necessari. Quindi forse c'è un piccolo rallentamento di qualche frazione di secondo per il download della libreria e dello script. Problema assolutamente minimizzabile se si spostasse lo script in fondo al body ( rimuovendo il document.ready che risulta inutile ) e si lasciasse solo jQuery nell'header. Tirando le somme, secondo me è una preoccupazione inutile questa, perchè se i nuovi browser scaricando in parallelo, scaricare la sola libreria jquery in un processo a parte non penso influenzi affatto il caricamento della pagina ( presupponendo di caricare gli altri script a fondo pagina.. ).
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Per rendere asincrono il caricamento degli script, HTML5 prevede degli appositi attributi:
Quote:
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#10 | ||
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Quote:
Quote:
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
||
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Ovviamente ciò vale solo se dell'ordine di esecuzione non te ne può fregare di meno. In caso contrario, metti i tag script in fondo al body (senza attributo async) nell'ordine da te desiderato, et voila.
EDIT: e nessuno toglie che tu possa voler usare un misto delle due tecniche.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Jul 2009
Città: Milano
Messaggi: 270
|
Ricordo di aver letto una discussione su google group di ingegneri di Google proprio su questo. Loro usano anche mettere gli script subito dopo la fine dell'ultimo elemento del DOM sul quale tale script opera, per migliorare la UX (user experience). Infatti se –come usualmente accade– l'utente è impaziente di "fare", cioè non vuole attendere il completamento del caricamento, le parti della pagina caricate sono già completamente attive.
Questa soluzione può essere una buona soluzione con pagine molto complesse, altamente interattive. Altrimenti si può anche evitare a favore di una maggiore semplicità di manutenzione, a mio parere.
__________________
AMD PII x4 955 BE | Sapphire HD4850 Vapor-X 1 GB | Samsung SpinPoint F1 500GB | Samsung EcoGreen F4 2TB Gigabyte GA-MA790FXT-UD5P | Fractal Design Define R3 USB3.0 Titanium Grey | CORSAIR 650W CMPSU-650TX Noctua U12P SE2 | 2 x 2GB Kingston 1333 MHz | Samsung SyncMaster P2450 | Samsung SyncMaster T200 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:23.




















