2012-06-10 18 views
10

Existen algunas excelentes herramientas de desarrollo web que facilitan la vida de los desarrolladores. Aplicaciones como LiveReload y CodeKit son los mejores ejemplos.¿Cómo funciona LiveReload (y otras aplicaciones similares) técnicamente?

Todo lo que me interesa es la forma en que hacen que la página web vuelva a cargar en vivo en el navegador web (ya sea Chrome, Firefox o lo que sea) cuando se escriben los cambios en el disco duro.

¿Cómo lo hacen realmente? ¿Hay alguna API que los proveedores de exploradores web expongan para realizar esto? o es solo una secuencia de comandos personalizada del lado del servidor que se inyecta a la página web (no escrita realmente por el desarrollador web) antes de que llegue al navegador, y algo de magia Ajax ocurre cuando se cambia el archivo en la unidad.

Estoy planeando desarrollar algo como esto en Python o Vala (Linux) y .NET (Windows), así que por favor avíseme si hay alguna documentación disponible para hacer esto.

Respuesta

1

Estos generalmente (¿siempre?) Se basan en un concepto bastante simple; de ​​vez en cuando, algunos desencadenadores de código de cliente que solicitan una secuencia de comandos del servidor si el archivo se ha actualizado. Si, y solo si, tiene, vuelve a cargar la página, o, para ciertos sitios (piense en SO y en algunos sitios de redes sociales), descarga solo la información nueva y la carga in-situ.

Para el caso que esté desarrollando en un entorno limitado local, también puede escuchar las señales del archivo 'modificado' en lugar de tener que tener un servidor capaz de responder a las solicitudes AJAX. La mayoría de los sistemas operativos proporcionan estas señales; por ejemplo, en Linux tiene inotify. De su página web se desprende que LiveReload utiliza un sistema como este: parte de su conjunto es un conjunto de complementos del navegador, que supuestamente proporcionan API de Javascript para los servicios del sistema operativo, y ajustan las reglas del espacio aislado del navegador para permitirlo.

+0

¿Dónde puedo obtener una breve documentación sobre cómo realizar algo como esto? – Kushal

+0

@Kush las API de notificación tienden, AFAIK, a ser bastante específicas del sistema operativo. Por lo tanto, tendrías que buscar la documentación relevante de la plataforma; es de esperar que venga alguien más que conozca los detalles mejor que yo. – lvc

3

De LiveReload FAQ:

para comunicarse con sus navegadores, LiveReloads necesita su código JavaScript para ser inyectado en sus páginas web. Hay 3 maneras de organizar que:

  1. o bien agregar una etiqueta de secuencia de comandos en el código HTML de forma manual, o
  2. instalar una extensión del navegador (que, cuando se activa, agrega la etiqueta de secuencia de comandos para las páginas visitadas en el fly) o
  3. utilice un complemento para su marco web (que agrega la etiqueta de script sobre la marcha al servir solicitudes), actualmente solo está disponible para Rails/Rack.

Además, sé que esta pregunta es viejo, pero para aquellos que también consiguió aquí en busca de "pitón LiveReload", hay una gran LiveReload server written in python.

Cuestiones relacionadas