LiveReload(以及其他类似的应用程序)在技术上是如何工作的?

11

现在有一些非常出色的Web开发工具,它们使得开发人员的生活更加轻松。像LiveReloadCodeKit这样的应用就是很好的例子。

我对它们感兴趣的是它们如何使得网页在 Web 浏览器中实时重载(无论是 Chrome、Firefox 还是其他什么浏览器),而无需离开浏览器,只要在硬盘上写入文件更改即可。

它们是如何做到的呢?Web 浏览器厂商是否公开了任何 API 来执行此操作?或者这只是一种自定义的服务器端脚本,在网页到达浏览器之前被注入(实际上并非由 Web 开发人员编写),当驱动器上的文件更改时会出现一些 Ajax 的魔法。

我打算使用 Python 或 Vala(Linux)和 .NET(Windows)开发类似的工具,请告诉我是否有相关文档可供参考。

2个回答

5

来自LiveReload FAQ:

为了与您的浏览器进行通信,LiveReload需要将其JavaScript代码注入到您的网页中。有三种方法可以安排:

  1. 手动将脚本标签添加到HTML代码中,或
  2. 安装浏览器扩展程序(激活后,会在访问的页面上即时添加脚本标签),或
  3. 使用您的Web框架插件(在提供请求时即时添加脚本标签),目前仅适用于Rails / Rack。

此外,我知道这个问题很老,但对于那些也搜索“livereload python”的人来说,有一个很棒的用Python编写的LiveReload服务器


0

这些通常(总是?)基于一个相当简单的概念 - 每隔一段时间,一些客户端代码会触发请求服务器脚本是否更新文件。只有在文件已经更新的情况下,它才重新加载页面 - 或者对于某些网站(比如SO和一些社交网络网站),它只下载新信息并在原地加载。

对于在本地沙盒中开发的情况,它们有时也可以监听操作系统的“文件已更改”信号,而不必设置能够响应AJAX请求的服务器。大多数操作系统都提供这些信号 - 例如,在Linux上,您有inotify。从他们的网页上看,LiveReload使用了类似这样的系统 - 他们的套件中包含一组浏览器插件,这些插件可能为操作系统服务提供JavaScript API,并调整浏览器沙盒规则以允许它。


我在哪里可以获得有关执行类似操作的简要文档? - Kushal
@Kush,据我所知,通知API往往相当特定于操作系统。因此,您需要查找相关平台文档 - 希望会有其他人比我更了解具体情况。 - lvc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接