是否可以编写不需要服务器的本地Web应用程序?

时间:2011-12-04 22:42:25

标签: web-applications local

我想创建一个具有基于浏览器的UI的本地应用程序,而不是基于MFC / Qt /等的独立GUI。如果我不想在本地计算机上运行Web服务器,我该怎么办?实现我的应用程序的动态部分?浏览器可以指向机器上的本地脚本,可执行文件或库吗?我可以直接使用本地数据库>这种方法有什么陷阱?

3 个答案:

答案 0 :(得分:4)

是的,但有限制。主要限制是你不能做任何CGI的东西,因为浏览器将打开并显示你的脚本源代码而不是执行它们。这有几个含义:

  1. 您无法连接到数据库。这使得很难做出存储状态和用户数据等常见的事情。
  2. 您无法设置内容类型。这意味着你不能做任何花哨的XML东西,如服务SVG文件或在XMLHttpRequest中使用XML。
  3. 您无法生成动态图像(使用ImageMagick或GD)。虽然使用HTML5,您可以使用画布来完成。
  4. 您无法读取或写入文件系统。这再次限制了您保存数据的能力。但它可以通过正确的用户权限来完成(更多内容见下文)。
  5. 但有一些解决方法。 HTML5允许您将数据存储在本地存储中,但显然这在旧版浏览器中不起作用。您可以将数据存储在cookie中,但这有大小限制。最后你可以实际保存到文件。您必须指示您的用户修改他们的浏览器首选项以允许您的脚本执行此操作,但可以完成此操作。其中一个例子是TiddlyWiki。它是单个HTML文件中的独立个人wiki。每次保存新内容时,页面都会修改并保存自己。你可能想看看他们是如何做到这一点的。

答案 1 :(得分:2)

我认为在这种情况下,您在脚本编写方面的唯一选择是Javascript。 (或Java Applets或Flash,但我认为你不想这样做)

我建议看看QT的嵌入式webkit。您可以使用它在一个简单的QT应用程序中嵌入浏览器并在大多数UI中使用它,然后您可以为后端使用C ++ / QT。 QT能够直接将C ++代码链接到Javascript。

请参阅QWebFrame class,尤其是addToJavaScriptWindowObject方法和Qt WebKit Bridge

答案 2 :(得分:1)

如果您想要纯HTML路由,HTML5将允许您在浏览器中创建本地数据库;有了足够的javascript编码经验,你可以在其中编写一个完整的网站,用JS渲染所有内容,而不是加载HTML文件。加载一个文件,然后使用javascript引擎渲染所有内容。

如果它是一个有意义的应用程序,你可以这样写,而不会生气致敬。

如果你在Windows上,你可以作弊并使用Active x / vbscript - 但如果你这样做,为什么不写一次点击.net应用程序。如果没有一些Web服务器应用程序组件,浏览器将无法与传统的数据库引擎通信。