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

Web applications 是否可以编写不需要服务器的本地web应用程序?,web-applications,local,Web Applications,Local,我想创建一个具有基于浏览器的UI的本地应用程序,而不是基于MFC/Qt/等的独立GUI。如果我不想在本地计算机上运行Web服务器,我如何实现我的应用程序的动态部分?浏览器是否可以指向计算机上的本地脚本、可执行文件或库?我是否可以直接使用本地数据库>这种方法存在哪些缺陷 如果您想要纯HTML路由,HTML5将允许您在浏览器中创建本地数据库;有了足够的javascript编码经验,您可以在其中编写一个完整的站点,以JS呈现所有内容,而不是加载HTML文件。加载一个文件,然后使用javascript引

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

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

如果这是一个有意义的应用程序,你可以这样写而不会发疯,向你致敬


如果您在windows上,您可能会作弊并使用Active x/vbscript,但如果您这样做,为什么不编写一个单击一次的.net应用程序呢。如果没有一些web服务器应用程序组件,浏览器将无法与传统的数据库引擎进行对话。

我相信在这种情况下,脚本编写方面的唯一选择是Javascript。(或Java小程序或Flash,但我认为您不需要)

我建议大家看看QT的嵌入式webkit。你可以用它在一个简单的QT应用程序中嵌入一个浏览器,并在你的大部分UI中使用它,那么你的后端就拥有了C++/QT的强大功能。Qt能够直接将C++代码链接到JavaScript。
请参阅,尤其是方法,以及。

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

  • 无法连接到数据库。这使得像存储状态和用户数据这样的普通工作变得很困难
  • 无法设置内容类型。这意味着您不能做任何花哨的XML工作,比如服务SVG文件或在XMLHttpRequest中使用XML
  • 无法生成动态图像(使用ImageMagick或GD)。尽管有了HTML5,你可以在画布上实现
  • 无法读取或写入文件系统。这同样限制了您保存数据的能力。但这可以通过正确的用户权限来完成(下面将对此进行详细介绍)

  • 但也有解决办法。HTML5允许您将数据存储在本地存储器中,但显然这在较旧的浏览器中不起作用。您可以将数据存储在cookie中,但这有大小限制。最后,您可以实际保存到文件。您必须指示用户修改其浏览器首选项,以允许脚本执行此操作,但这是可以做到的。这方面的一个例子是。它是一个包含在单个HTML文件中的独立个人wiki。每次保存新内容时,页面都会修改并保存自身。你可能想看看他们是如何做的,以获得灵感。

    是什么过程让你做出这个决定的?HTTP+CSS非常适合制作一个动态的、可移植的GUI。但是服务器是本地web应用的一个不便之处,这可能意味着安装需要升级等。这就是为什么-如果可能的话,要避免使用服务器。@paperjam:服务器实际上不需要root权限来安装。在端口80上运行需要它,但您可以在其他端口上运行服务器。我们这样做是为了实现我们的web应用程序的桌面版本。基本上是一个运行在随机端口上的最小perl服务器(我们的应用程序是perl)和一个连接到服务器的自定义webkit可执行文件。我们选择webkit来构建我们的自定义浏览器,因为它支持大3:Windows、Mac和Linux。@slebetman:走到这一步,您还可以省去服务器,将自定义URL方案/协议集成到您的webkit或Chromium浏览器中。或者在http请求离开浏览器之前拦截它们。然后可以将服务器链接到浏览器可执行文件中。这就是我目前正在考虑的路线。@paperjam:对我来说,我已经用perl编写了应用程序,所以服务器路线最有意义。即使不是这样,我还是很犹豫是否要用C/C++编写web处理代码,所以我们仍然需要弄清楚如何在Webkit和脚本引擎之间进行IPC。TCP/IP恰好是最可靠的跨平台通信方式。因为我们使用的是TCP/IP,所以也可以使用HTTP;-)