11

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

把它想象成一个维基,但只为一个人服务,但更酷。我希望让我的(潜在的)崇拜者尽可能地使用它,所以我正在考虑将它变成一个网络应用程序。

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

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

这就是问题所在,如何使主要关注表单数据输入的应用程序易于潜在用户(是的网络应用程序)使用,但也可以离线使用,以便他们知道他们可以完全控制自己的数据(是的厚客户端应用程序)。

我看到以下解决方案:

  1. 将它构建为一个胖客户端 Java 应用程序,并在网络上运行一个精简版作为一个小程序,人们可以在下载完整的东西之前玩这个小程序。
  2. 将其构建为用于在线的 Flex 应用程序和用于离线的 Air 应用程序(基本上相同的源不同的构建脚本)。
  3. 将其构建为标准的网络应用程序(HTML、JS 等),但有一个可下载的版本,以某种方式完全在他们的计算机上运行该网站。它根本不会触网。

忽略 1 和 2(我正在分别研究它们),我认为 3 将涉及:

  • 打包一个安装,其中包含一个微型网络服务器,上面有我的代码,准备运行。
  • 将数据库从 mySQL 之类的东西重新映射到 SQLite 之类的东西。
  • 创建某种运行服务器并将浏览器打开到正确位置的便利应用程序,可能使用诸如Prism之类的东西来隐藏整个浏览器。

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

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

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

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

4

17 回答 17

6

我认为您应该查看tiddlywiki以获取灵感。

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

我将其用作个人 wiki 来记录各种主题。

于 2008-10-06T08:19:10.597 回答
5

Google Gears用于离线提供一些 google 应用程序(Google Reader、Gmail、Docs 等)。

什么是 Google Gears?

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

  • 本地服务器,用于缓存和提供应用程序资源(HTML、JavaScript、图像等),无需联系服务器
  • 数据库,用于在浏览器中存储和访问数据
  • 工作线程池,使 Web 应用程序更具响应性

通过在后台执行昂贵的操作

Gears 目前是早期访问开发人员的版本。目前,它还没有打算供实际用户在生产应用程序中使用。

如果您是一名有兴趣在您的应用程序中使用 Gears 的开发人员,请访问Gears 开发人员页面

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

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

于 2008-10-06T07:14:14.270 回答
4

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

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

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

于 2008-10-06T07:04:25.817 回答
2

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

我们打包的网络服务器不够小,无法满足您的需求,但我们也没有试图保持它的小。如果您可以将您的网络服务器代码打包成一个足够小的包,我不明白为什么这种方法行不通。

于 2008-10-06T06:52:40.163 回答
2

我认为AIR是要走的路..

于 2008-10-07T02:05:52.580 回答
1

你检查过谷歌齿轮吗?

于 2008-10-06T07:10:26.383 回答
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. 即:Internet Explorer 用户数据行为。
  7. cookie:基于 cookie 的持久存储。
于 2009-10-14T09:56:31.687 回答
0

另外,我认为moin moin wiki软件有一个桌面版本,其中包括它自己的网络服务器。这东西在 python 中很容易,因为包括电池

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

于 2008-10-06T07:17:10.673 回答
0

您可以使用 Webkit 或 Firefox 的主干创建一个专用客户端。例如,某些游戏使用该解决方案进行 UI。

或者你可以制作一个小型网络服务器(我在 Lua 中有一个小型网络服务器,用于类似目的,只有几个带有库的大型服务器等等)。但是,如果您采用这条路线,要考虑的最大问题是您不希望您的网络服务器依赖于环境变量,而是希望它完全自主。您应该尝试将所有变量隔离到配置文件并完成它(捆绑样式)

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

或者 GoogleGears,但它(几乎)与 Flex+Air 相同。如果您熟悉,请选择 Flex+Air

于 2008-10-06T07:32:34.357 回答
0

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

从我弄乱它的角度来看,它似乎可以满足您的目的。它有一个内置的 Web 服务器(尽管您可以使用几乎任何您想要的服务器)并且您可以使用 Python 支持的任何数据库。

另外,Python 与 Linux 配合得很好。:)

于 2008-10-06T07:58:05.210 回答
0

如果您将应用程序制作为严重依赖客户端技术的常规 Web 应用程序(如前所述,使用 DHTML 和Google Gears之类的离线存储数据),那么一旦打开,与服务器的交互并不多,您可能会将东西托管在一个基本的共享托管帐户上,这不会花费那么多。这可能是您最容易的起点,因为您不必担心桌面应用程序的所有问题,例如与不同操作系统的兼容性、打包安装等,但您也不需要大量的服务器资源。

于 2008-10-06T08:09:14.127 回答
0

您可以在 Adob​​e AIR 中使用 HTML、JS 和其他任何内容,并且您也可以选择在本地保存数据。

于 2008-10-06T08:14:37.733 回答
0

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

于 2008-10-06T09:12:52.780 回答
0

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

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

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

于 2008-10-06T09:47:21.463 回答
0

您也可以考虑使用 XULRunner 或 Prism

它们是 FireFox、Thunderbird 和 Joost 所基于的开源技术,允许您使用 XML 和 javascript 开发应用程序,基本上与 FireFox 本身拥有的相同的丰富 api 进行对比。当然这也是跨平台的,所以它可以在 Mac/Linux/Windows 上运行......

在这里查看更多信息: https ://developer.mozilla.org/en/XULRunner

于 2008-10-22T12:50:37.470 回答
0

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

另外,将它打包到一个包中会很好,因此没有安装 django 的用户可以在没有任何依赖项的情况下运行应用程序...

于 2008-10-27T23:27:25.787 回答
-1

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

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

拒绝你将选择的 wiki,忘记从头开始编写你的网络应用程序。根据你的问题,最好的方法是选择一些有效的东西并定制/修改它以满足你的需求。

于 2008-10-06T07:12:35.130 回答