有人已经构建了完全离线运行的Web应用程序吗?

11

我正在开发一款应用程序,希望作者能够使用它来帮助他们撰写内容。

可以将其视为维基百科,但只针对个人,并且更酷。我希望尽可能地让我的(潜在)受众易于接近,因此我考虑将其作为Web应用程序。

它确实不必是这样,没有与其他网站的集成,也没有社交功能。但需要在表单中输入信息,因此为了快速构建,Web可能是最好的选择。

然而,我真的不想自己托管它。首先,我付不起钱,但更重要的是使用此应用程序的人可能不希望将其数据存储在其他地方。这是有关他们正在编写的内容的私人信息,我不指望他们信任我,因此我考虑将其制作为厚客户端应用程序。

问题就在于如何使主要专注于表单数据输入的应用程序易于接近潜在用户(Web应用程序),但同时也可以脱机,以便他们知道他们完全控制自己的数据(厚客户端应用程序)。

我看到以下解决方案:

  1. 构建一个厚客户端Java应用程序,并在网上运行一个简化版本作为应用程序,人们可以在下载完整版之前试用。
  2. 构建Flex应用程序以供在线和Air应用程序以供脱机使用(基本上是相同的源代码不同的构建脚本)。
  3. 将其构建为标准Web应用程序(HTML、JS等),但具有可下载的版本,该版本可以在他们的计算机上完全运行该站点。它不会接触网络。

忽略1和2(我单独研究它们),我认为3涉及:

  • 打包安装程序,其中包含运行我的代码的微型Web服务器。
  • 从诸如mySQL之类的数据库重新映射到诸如SQLite之类的数据库。
  • 创建一种方便应用程序,该程序运行服务器并打开您的浏览器到正确的位置,可能使用类似Prism的东西来隐藏整个浏览器。
  • 那么,您以前做过这样的事情吗?

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

    最后,是否有我没有想到的其他解决方案?'

    (另外,Joyent Slingshot是在另一个问题中提出的建议,但它是RoR(我没有经验),我99%确定它不在Linux下运行,所以它不适合我。)

    17个回答

    6

    我认为你应该参考tiddlywiki,以获取灵感。

    这是一个完全自包含在单个html文件中的JavaScript编写的维基。您可以将其作为file:/// URL加载到浏览器中,因此无需服务器。

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


    5

    Google Gears可用于为一些谷歌应用程序提供离线功能(Google Reader、Gmail、Docs等)。

    什么是Google Gears?

    Gears是一个开源的浏览器扩展,允许开发人员创建可以离线运行的Web应用程序。Gears提供了三个关键功能:

    • 本地服务器,可以缓存和提供应用程序资源(HTML、JavaScript、图像等),无需联系服务器
    • 数据库,可以在浏览器内部存储和访问数据
    • 工作线程池,使Web应用程序更加响应,通过在后台执行昂贵的操作

    Gears目前是早期的开发者版本。目前还不适用于实际用户在生产应用程序中使用。

    如果您是开发人员,并希望将Gears与您的应用程序一起使用,请访问Gears Developer Page

    如果您希望在计算机上安装Gears,请访问Gears主页。请注意,Gears目前还不适用于一般用户使用。

    但正如您所读的,它仍处于早期阶段。


    Google Gears只是谷歌试图开发的一种专有扩展,以与SilverLight和Flex竞争,html5提供了许多相同的功能,但没有我们多年来一直试图摆脱的供应商锁定。 是的,我意识到并非所有浏览器都支持html5,但它们将会支持(除了IE可能除外)。 - olliej
    一些搜索表明Safari 3.1支持客户端数据库(尽管Chrome显然关闭了它,转而支持Gears),Firefox支持应用程序缓存 - 我假设每个浏览器的最新版本都支持所有功能。 - olliej
    你错过了 Google Gears 链接开头的 'G' :-) - Simon Howard

    4

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

    目前我认为Safari是唯一支持其中任何一项的浏览器,并且我相信它只支持客户端数据库和本地存储部分。webkit nightlies支持所有这些功能,Firefox nightlies支持其中许多功能(也许现在全部都支持了?)

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


    2
    我们正在使用类似于您提供的第三个选项来本地测试我们的网站。效果很好。
    我们打包的Web服务器不够小,无法完成您所需的任务,但我们也没有尝试使其更小。如果您能将Web服务器代码打包成足够小的包,我认为这种方法应该可以运行。

    2

    我认为AIR是最好的选择。


    1

    1

    解决方案3的一些指针:

    • GUI部分,ExtJS非常好用。

    • 存储部分,有一个很棒的JavaScript库能够抽象不同的存储后端:PersistJS

    PersistJS支持的后端:

    1. flash:Flash 8持久化存储。
    2. gears:基于Google Gears的持久化存储。
    3. localstorage:HTML5草案存储。
    4. whatwg_db:HTML5草案数据库存储。
    5. globalstorage:HTML5草案存储(旧规范)。
    6. ie:Internet Explorer userdata behaviors。
    7. cookie:基于Cookie的持久化存储。

    0

    0

    你可以使用Webkit或Firefox的骨干制作专用客户端。例如,一些游戏使用该解决方案来进行用户界面设计。

    或者你可以制作一个小型Web服务器(我有一个在Lua中的小型Web服务器,我用它来实现类似的目的,只有几兆字节的库和所有内容)。然而,如果你选择这条路线,最大的问题是你不希望你的Web服务器依赖于环境变量,你希望它完全自主。你应该尝试将所有变量隔离到一个配置文件中,并完成它(捆绑样式)

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

    或者GoogleGears,但这与Flex+Air几乎相同。所以如果你熟悉Flex+Air,就选择它吧。


    0

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

    从我的测试中,它似乎适合您的目的。它有一个内置的Web服务器(虽然您可以使用几乎任何服务器),并且您可以使用Python支持的任何数据库。

    此外,Python与Linux兼容良好。 :)


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