2012-06-10 24 views
10

Ci sono alcuni grandi strumenti di sviluppo web là fuori che rendono facile la vita degli sviluppatori. App come LiveReload e CodeKit sono i grandi esempi.Come LiveReload (e altre app simili) funzionano tecnicamente?

Tutto quello che mi interessa è il modo in cui rendono la pagina web in diretta ricaricata nel browser Web (sia Chrome, Firefox o qualsiasi altra cosa) da sé quando le modifiche ai file vengono scritte sul disco rigido.

Come lo fanno effettivamente? Esistono API che i fornitori di browser Web espongono per eseguire questa operazione? o il suo script sul lato server personalizzato che viene iniettato nella pagina web (non effettivamente scritto dallo sviluppatore web) prima che raggiunga il browser, e qualche magia Ajax si verifica quando il file viene modificato sull'unità.

Sto pianificando di sviluppare qualcosa di simile in Python o Vala (Linux) e .NET (Windows), quindi fatemi sapere se c'è qualche documentazione disponibile per farlo.

risposta

1

Questi sono di solito (sempre?) Basati su un concetto abbastanza semplice - ogni tanto, alcuni trigger di codice client che richiedono uno script del server se il file è stato aggiornato. Se, e solo se, ha, ricarica la pagina - o, per alcuni siti (pensa SO e alcuni siti di social network), scarica solo le nuove informazioni e le carica in-situ.

Per il caso che si sta sviluppando in una sandbox locale, è possibile anche ascoltare i segnali di OS 'file è cambiato' piuttosto che dover disporre di un server in grado di rispondere alle richieste di richieste AJAX. La maggior parte dei sistemi operativi fornisce questi segnali - ad esempio, su Linux si ha inotify. Dalla loro pagina web appare che LiveReload utilizza un sistema come questo: parte della loro suite è un insieme di plug-in del browser, che presumibilmente forniscono API Javascript per i servizi del sistema operativo e regola le regole sandbox del browser per consentirle.

+0

Dove posso ottenere una breve documentazione sull'esecuzione di qualcosa di simile? – Kushal

+0

@Kush le API di notifica tendono, AFAIK, ad essere abbastanza specifiche per il sistema operativo. Quindi, dovresti cercare la documentazione della piattaforma pertinente - si spera che qualcun altro arriverà chi conosce le specifiche meglio di me. – lvc

3

Da LiveReload FAQ:

per comunicare con il browser, LiveReloads ha bisogno il suo codice JavaScript per essere iniettato nelle pagine web. Ci sono 3 modi per organizzare che:

  1. o aggiungere un tag script nel codice HTML manualmente o
  2. installare un'estensione del browser (che, se attivato, aggiunge il tag script per le pagine visitate sul fly), oppure
  3. utilizza un plug-in per il tuo framework web (che aggiunge il tag di script al volo quando serve le richieste), attualmente disponibile solo per Rails/Rack .

Inoltre, so che questa domanda è vecchia, ma per coloro che anche ottenuto qui alla ricerca di "livereload python", c'è una grande LiveReload server written in python.

Problemi correlati