有没有人建立可以完全离线运行的网络应用程序?

时间:2008-10-06 06:44:16

标签: offline

我正在构建一个应用程序(作者希望)用来帮助他们,呃...... 作者的东西。

把它想象成一个维基,但仅限于一个人,但更酷。我希望尽可能让我(潜在的)崇拜群众尽可能地访问它,所以我正在考虑将它变成一个网络应用程序。

当然不一定,没有与其他网站集成,没有社交功能。然而,它涉及在表单中键入信息,因此对于快速构建,Web可能是最好的。

但是,我真的不想自己主持。我买不起它,但主要是使用它的人可能不希望他们的数据存储在其他地方。这是关于他们所写内容的私人信息,我不希望他们相信我,因此我正在考虑将其作为一个厚客户端应用程序。

其中存在的问题是,如何将主要侧重于表单数据输入的应用程序轻松提供给潜在用户(yay web apps),还可以离线,这样他们就知道他们可以完全控制他们的数据(yay thick-client)应用程序)。

我看到以下解决方案:

  1. 将其构建为胖客户端Java应用程序,并在网上运行缩减版本作为人们可以在下载完整内容之前玩的小程序。
  2. 将其构建为适用于在线的Flex应用程序和用于离线的Air应用程序(基本上是相同来源的不同构建脚本)。
  3. 将其构建为标准的网络应用程序(HTML,JS等),但有一个可下载的版本,以某种方式在他们的计算机上运行网站完全。它根本不会触及网络。
  4. 忽略1和2(我正在分别研究它们),我认为3会涉及:

    • 打包一个安装程序,其中包含一个包含我的代码的小型Web服务器,随时可以运行。
    • 将数据库从mySQL重新映射到像SQLite这样的东西。
    • 创建一种运行服务器并将浏览器打开到正确位置的某种便利应用程序,可能使用类似Prism的内容来隐藏整个broswer。

    那么,你以前做过这样的事吗?

    如果是,您遇到了什么问题?

    最后,还有另一种我没想过的解决方案吗?'

    (另外,Joyent Slingshot是另一个问题的建议,但它是RoR(我没有经验)并且我99%肯定它不能在linux下运行,所以它不是对我来说。)

17 个答案:

答案 0 :(得分:6)

我认为你应该看一下tiddlywiki的灵感。

这是一个用JavaScript编写的wiki,它完全独立于一个html文件中。您可以将其作为file:/// URL加载到浏览器中,因此不需要服务器。

我将它用作个人维基,以记录各种主题。

答案 1 :(得分:5)

Google Gears用于离线提供一些谷歌应用程序(谷歌阅读器,Gmail,文档等)。

什么是Google Gears?

  

Gears是一个开源浏览器扩展,可供开发人员创建   可以脱机运行的Web应用程序。   Gears提供三个主要功能:

     
      
  • 本地服务器,用于缓存和提供应用程序资源(HTML,   JavaScript,图像等)没有   需要联系服务器
  •   
  • 用于存储和访问浏览器内数据的数据库
  •   
  • 工作线程池,使Web应用程序更多   响应
  •   
     

通过执行昂贵的操作   背景

     

Gears目前是早期访问开发人员的版本。目前尚未打算供真实用户在生产应用程序中使用。

     

如果您是有兴趣在应用中使用Gears的开发人员,请访问Gears Developer Page

     

如果您希望在计算机上安装Gears,请访问Gears主页。但请注意,Gears尚未用于一般用途。

但是当你读到它时仍处于早期阶段。

答案 2 :(得分:4)

还有一个选项,即使用新的HTML5离线应用程序功能,即应用程序缓存,客户端数据库和本地存储API。

目前我认为Safari是唯一支持其中任何一种的出货浏览器,我相信它只支持客户端数据库和本地存储部件。 webkit nightlies支持所有这些功能,firefox nightlies支持其中许多功能(现在可能都是?)

[编辑(olliej):更正,Firefox 3支持应用程序缓存,但不是客户端DB]

答案 3 :(得分:2)

我们正在使用类似于您的第三个选项来在本地测试我们的网站。工作得很好。

我们的打包网络服务器不够小,无法满足您的需求,但我们再也没有尝试过保持小规模。如果你可以将你的网络服务器代码打包成一个足够小的包,我不明白为什么这种方法不起作用。

答案 4 :(得分:2)

我认为AIR是要走的路..

答案 5 :(得分:1)

解决方案3的一些指示:

  • 对于GUI部分,ExtJS似乎非常好。

  • 对于存储部分,有一个很好的javascript库抽象出不同的存储后端:PersistJS

支持PersistJS的后端:

  1. flash:Flash 8持久存储。
  2. 齿轮:基于Google Gears的持久存储。
  3. localstorage:HTML5草稿存储。
  4. whatwg_db:HTML5草案数据库存储。
  5. globalstorage:HTML5草稿存储(旧规范)。
  6. ie:Internet Explorer用户数据行为。
  7. cookie:基于Cookie的持久存储。

答案 6 :(得分:1)

您是否已查看google gears

答案 7 :(得分:0)

您可以使用Webkit或Firefox的骨干制作专用客户端。例如,有些游戏将此解决方案用于UI。

或者你可以制作一个小型的网络服务器(我在Lua中有一个小网络服务器,我用于类似的目的,只有几个megas与libaries和所有)。但是,如果你采取这种方式,最重要的问题是你不希望你的网络服务器依赖于环境变量,你希望它完全自治。您应该尝试将所有变量隔离到配置文件中并使用它完成(包样式)

或者您可以使用Java客户端应用程序来显示网页

或GoogleGears,但与Flex + Air相同(差不多)。因此,如果您熟悉的话,请选择Flex + Air

答案 8 :(得分:0)

您没有指定语言,但几年前我查看了Karigell。它是Python Web框架,类似于Django或TurboGears,但它没有这些框架的开销。

从我的乱搞中,它似乎适合你的目的。它有一个内置的Web服务器(虽然你几乎可以使用任何你想要的服务器),你可以使用Python支持的任何数据库。

另外,Python适用于Linux。 :)

答案 9 :(得分:0)

如果您使应用程序成为一个非常依赖客户端技术的常规Web应用程序(使用DHTML和Google Gears之类的内容来离线存储数据,那么一旦打开,就没有太多的交互了服务器,您可能可以在基本的共享主机帐户上托管该东西,这不会花费那么多。这可能是您最简单的起点,因为您不必担心桌面应用程序的所有问题,例如与不同操作系统的兼容性,打包安装等,但您也不需要大量服务器资源。< / p>

答案 10 :(得分:0)

您可以使用HTML,JS和Adobe AIR中的任何其他内容,您也可以在本地保存数据。

答案 11 :(得分:0)

另外,我认为moin moin wiki软件有一个desktop version,其中包含自己的网络服务器。这个东西在python中很容易,因为batteries are included

您可能想看看他们是如何做到的?

答案 12 :(得分:0)

在java世界中,您可以将jetty用于服务器,使用您喜欢的框架实现Web应用程序并使用hsqldb作为数据库 - 它完全存在于您的容器(jetty)中。您可以在Web上部署预览应用程序并打包可下载的脱机版本。

答案 13 :(得分:0)

Apache / MySQL / PHP的可移植发行版(放置在USB密钥上):

http://portableapps.com/apps/development/xampp

这应该很容易适应您的需求。

答案 14 :(得分:0)

你也可以考虑使用XULRunner或Prism

它们是构建FireFox,Thunderbird和Joost的开源技术,并允许您使用XML和javascript开发基本上与FireFox本身相同的丰富api的应用程序。当然这也是跨平台的,所以它适用于Mac / Linux / Windows ......

点击此处了解更多信息: https://developer.mozilla.org/en/XULRunner

答案 15 :(得分:0)

我在考虑自己做这样的事情。我的计划是使用django编写应用程序并编写启动django测试服务器的脚本并在指定端口上打开默认浏览器。我的计划是使用SQLite ......

此外,将它打包到一个软件包中会很不错,所以没有安装django的用户可以在没有任何依赖的情况下运行app ...

答案 16 :(得分:-1)

如上所述,我的建议是使用Wiki系统来解决您的问题。现在问题可能是:哪一个?

您可以使用Trac,它非常简单,您可以自定义其GUI。但是,如果您更喜欢更高级的内容,请使用MoinMoin。我使用它多年了,IMO它是一个非常好的和强大的wiki系统。

您将选择使用维基百科,忘记从头开始编写您的网络应用程序。根据你的问题,最好的方法是挑选一些有效的东西,并根据你的需要定制/修改它。