使用 Delphi+Intraweb 创建 HTML5 离线应用程序(缓存清单)与浏览器存储(webSQL/IndexedDB)可能吗?

发布于 2024-12-26 20:34:17 字数 534 浏览 2 评论 0原文

我当前的 Intraweb 应用程序实际上是一个 DataSnap 客户端,它连接到我的 DataSnap 服务器,该服务器与同一台计算机上的 Interbase 服务器连接并位于一起。它可以正常工作,但速度很慢,并且需要持续的互联网连接才能工作。单击的每个按钮或触发的任何事件都需要浏览器连接到 Web 服务器 (Intraweb)。

我正在考虑使用Delphi XE2中的Intraweb、HTML5缓存清单功能创建一个离线Web应用程序,并在移动设备离线时使用基于浏览器的SQL存储(例如webSQL或IndexedDB)作为本地浏览器存储。仅当 Internet 连接可用时,它才会连接到真实的 DataSnap 服务器,以进行初始化或同步回 DataSnap 服务器。

有可能吗?

我的主要问题是从 Intraweb Web 应用程序中获取网页的 url,并且我不想将所有浏览器的存储代码放入模板文件中。

将 Intraweb 生成的 JavaScript 代码移动到其他 js 文件也是相当繁琐的,并且这样做可能会破坏 Intraweb 应用程序代码和逻辑。这有什么解决方法吗?

My current Intraweb application is actually a DataSnap Client which connect to my DataSnap Server that connects and sits together with an Interbase Server on the same machine. It works correctly but quite slow and require constant Internet connetion to work. Each button clicked or any event triggered will require the browser to connect to the Web Server (Intraweb).

I am thinking of creating an offline web application using Intraweb in Delphi XE2, HTML5 cache manifest feature, and use the browser-based SQL storage (such as webSQL or IndexedDB) as local browser storage when the mobile device goes offline. It will only connect to real DataSnap server when Internet connection is available to do initialization or synchronization back to the DataSnap Server.

Is is possible?

My main problem is to get the webpages' url out from the intraweb web application, and I do not want to put all the browser's storage code inside the template files.

It is also quite tedious to move the JavaScript code generated by Intraweb to other js files, and by doing this I may break the Intraweb application codes and logic. Is there any workaround on this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南笙 2025-01-02 20:34:17

正如您自己所说:“单击的每个按钮或触发的任何事件都将要求浏览器连接到 Web 服务器”。

这就是IntraWeb的设计:客户端-服务器应用程序,其中大部分代码逻辑在服务器端执行。您可以向应用程序添加一些 AJAX 小部件,但 IntraWeb 本身就是一个服务器端框架。

为了使完整的 HTML5 AJAX 客户端应用程序能够独立运行,您需要一个纯 JavaScript 应用程序。甚至基于 Sacha/ExtJS 的 AJAX 框架(例如 ExtPascalUniGUI) 或 Morfik 需要服务器才能运行。

但是创建纯 HTML5 JavaScript 应用程序是一项艰巨的任务 - 但这是可能的,因为您可以使用 JavaScript 中的 DataSnap 内容(使用 XML 或 JSON)。您可以尝试 http://www.appcelerator.com/,这是一个用于创建 JavaScript 应用程序的出色 IDE 和平台,作为本机应用程序运行。

为了拥有断开连接的 HTML5 应用程序,您可能需要等待以下产品发布:

感谢这两个项目,您将能够在对象 pascal 中进行编码,然后 JavaScript 将从 pascal 源代码编译,然后使用 HTML 本地存储。例如,请参阅 这篇关于使用 Smart/OP4JS 存储的文章 - 我已经测试过它(在 Alpha 中),它运行得很好:你有一个纯粹的独立 HTML 文件,它可以在没有任何服务器的情况下运行,并且有本地存储。 SQLite3存储已规划(尚未完成)。

As you stated by yourself: "Each button clicked or any event triggered will require the browser to connect to the Web Server".

This is the design of IntraWeb: a Client-Server application, in which most code logic is executed on the server side. You can add some AJAX widgets to your applications, but IntraWeb, by itself, is a Server-Side framework.

In order to have a full HTML5 AJAX Client application able to run stand-alone, you'll need a pure JavaScript application. Even Sacha/ExtJS based AJAX frameworks (like ExtPascal or UniGUI) or Morfik require a server to run.

But creating a pure HTML5 JavaScript application is some difficult task - but it is possible, since you can consume DataSnap content from JavaScript (using XML or JSON). You can try http://www.appcelerator.com/ which is a great IDE and platform for creating JavaScript applications, which run as native apps.

In order to have a disconnected HTML5 application, you may have to wait for the following products to be released:

Thanks to these two projects, you would be able to code in object pascal, then the JavaScript will be compiled from the pascal source, then use HTML local storage. See for instance this article about using storage with Smart/OP4JS - I've tested it (in Alpha), and it works very well: you have a pure stand-alone HTML file which is able to run without any server, and have local storage. SQLite3 storage is planned (not yet finished).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文