【问题标题】:Use Delphi+Intraweb to create HTML5 offline application (cache manifest) with browser storage (webSQL/IndexedDB) possible?使用 Delphi+Intraweb 创建带有浏览器存储(webSQL/IndexedDB)的 HTML5 离线应用程序(缓存清单)可能吗?
【发布时间】:2012-02-08 10:45:03
【问题描述】:

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

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

有可能吗?

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

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

【问题讨论】:

    标签: delphi html web-sql intraweb cache-manifest


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回复。看来“Smart aka OP4JS”有解决问题的潜力,你认为它会支持DataSnap连接吗?
    • 目前是否有任何 API/连接器允许 JavaScript 与 DataSnap Server 连接/通信?
    • Delphi XE2 中的 AFAIK DataSnap(可能之前)能够生成 JavaScript 包装器,您可以在 Smart 中使用它。
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2011-02-16
    • 2014-05-22
    • 2016-01-02
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多