47

是否可以在浏览器中构建应用程序?申请意味着:

1浏览器和远程应用服务器之间存在连接(在线模式):

  • 应用程序以典型的基于 Web 的模式运行
  • 应用程序将必要的数据存储在离线存储中,以在离线模式下使用 (2)
  • 当从离线模式恢复到在线模式时,应用程序同步/推送数据(在离线模式期间捕获)回服务器

2浏览器和远程应用服务器之间没有连接(离线模式):

  • 该应用程序仍将运行(javascript?)
  • 应用程序将向用户呈现数据(离线存储)
  • 应用程序可以接受来自用户的输入(并在离线存储中存储/追加)

这可能吗?如果答案是肯定的,是否正在构建任何(Ruby/Python/PHP)框架?

谢谢

4

6 回答 6

41

是的,这是可能的。

  • 您需要用 Javascript 编写应用程序,并以某种方式检测浏览器是否处于离线模式(最简单的方法是不时轮询服务器)。(编辑:查看评论以更好地检测离线模式)

  • 确保您的应用程序仅包含静态 HTML、Js 和 CSS 文件(或在脚本中手动设置缓存策略,以便浏览器在离线模式下记住它们)。对页面的更新是通过 JS DOM 操作完成的,而不是通过服务器(ExtJS http://www.extjs.com之类的框架将在这里为您提供帮助)

  • 对于存储,请使用诸如 PersistJS ( http://github.com/jeremydurham/persist-js ) 之类的模块,该模块使用浏览器的本地存储来跟踪数据。连接恢复后,与服务器同步。

  • 您需要预先缓存使用的图像和其他资产,否则如果您之前没有使用它们,它们将在离线模式下不可用。

  • 再说一遍:您的应用程序的大部分内容需要使用 javascript,如果服务器无法访问,PHP/Ruby/Python 框架对您的帮助很小。服务器可能保持尽可能简单,使用类似 REST 的 AJAX API 来存储和加载数据。

于 2010-05-07T06:15:37.053 回答
15

Mark Pilgrim 的(在线)一书Dive Into HTML5中的“让我们离线”一章很好地概述了使用 HTML5 技术编写离线 Web 应用程序。

注意:由于 Mark Pilgrim 的原始 Dive Into HTML5 链接似乎已关闭。

现在可以在其他地方找到副本。

于 2010-05-30T10:23:36.273 回答
4

Jake Archibald 写了“离线食谱”。ServiceWorker 的现代(2014 年 12 月 9 日)和不错的方法:

http://jakearchibald.com/2014/offline-cookbook/

于 2015-02-25T16:25:04.637 回答
3

2018 年的答案是利用 service worker,并构建一个 Progressive Web App: https ://developers.google.com/web/progressive-web-apps/

于 2018-06-23T18:33:23.840 回答
0

我也在寻找这个,我发现了 abt HTML5 Offline Web Apps。还没试过

典型在线 Web 应用程序的用户只能在连接到 Internet 时才能使用这些应用程序。当他们离线时,他们无法再查看电子邮件、浏览日历约会或使用在线工具准备演示文稿。同时,本地应用程序提供了这些功能:电子邮件客户端在本地缓存文件夹,日历在本地存储它们的事件,演示包在本地存储它们的数据文件。

于 2010-05-30T10:12:42.580 回答
-1

看看 Google Gears,http://code.google.com/apis/gears/。尽管它们已被逐步淘汰以支持 HTML5。然而,作为 HTML5 被推送的似乎是 Google Gears。

于 2010-05-21T03:25:07.180 回答