我当前的Intraweb应用程序实际上是一个DataSnap客户端,它连接到我的DataSnap服务器,该服务器在同一台机器上与Interbase Server连接并连接在一起。它工作正常,但速度很慢,需要不断的Internet连接才能工作。单击每个按钮或触发任何事件都需要浏览器连接到Web服务器(Intraweb)。
我正在考虑使用Delphi XE2中的Intraweb创建离线Web应用程序,HTML5缓存清单功能,并在移动设备脱机时使用基于浏览器的SQL存储(例如webSQL或IndexedDB)作为本地浏览器存储。当Internet连接可用于初始化或同步回DataSnap服务器时,它只会连接到真正的DataSnap服务器。
有可能吗?
我的主要问题是从intraweb Web应用程序中获取网页的URL,我不想将所有浏览器的存储代码放在模板文件中。
将Intraweb生成的JavaScript代码移动到其他js文件也非常繁琐,通过这样做,我可能会破坏Intraweb应用程序代码和逻辑。有没有解决方法呢?
答案 0 :(得分:4)
正如您自己所说:“单击每个按钮或触发任何事件都需要浏览器连接到Web服务器”。
这是IntraWeb的设计:一个客户端 - 服务器应用程序,其中大多数代码逻辑在服务器端执行。您可以向应用程序添加一些AJAX小部件,但IntraWeb本身就是服务器端框架。
为了让完整的HTML5 AJAX客户端应用程序能够独立运行,您需要一个纯JavaScript应用程序。甚至基于Sacha / ExtJS的AJAX框架(如ExtPascal或UniGUI)或Morfik也需要运行服务器。
但创建一个纯HTML5 JavaScript应用程序是一项艰巨的任务 - 但这是可能的,因为您可以从JavaScript(使用XML或JSON)使用DataSnap内容。您可以尝试http://www.appcelerator.com/这是一个很棒的IDE和平台,用于创建以本机应用程序运行的JavaScript应用程序。
为了拥有断开连接的HTML5应用程序,您可能需要等待以下产品发布:
由于这两个项目,您可以在对象pascal中编码,然后JavaScript将从pascal源编译,然后使用HTML本地存储。例如,参见this article about using storage with Smart/OP4JS - 我已经对它进行了测试(在Alpha中),并且它运行良好:您有一个纯粹的独立HTML文件,它可以在没有任何服务器的情况下运行,并且具有本地存储。 SQLite3存储计划(尚未完成)。