我正在考虑使用Delphi XE2中的Intraweb创建一个离线Web应用程序,HTML5缓存清单功能,并在移动设备脱机时使用基于浏览器的SQL存储(例如webSQL或IndexedDB)作为本地浏览器存储.当Internet连接可用于初始化或同步回DataSnap Server时,它将仅连接到真正的DataSnap服务器.
有可能吗?
我的主要问题是从intraweb Web应用程序中获取网页的url,我不想将所有浏览器的存储代码放在模板文件中.
将Intraweb生成的JavaScript代码移动到其他js文件也非常繁琐,通过这样做,我可能会破坏Intraweb应用程序代码和逻辑.这有什么解决方法吗?
正如您自己所说:“单击每个按钮或触发的任何事件都需要浏览器连接到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应用程序,您可能需要等待以下产品发布:
> Smart又名OP4JS;
> Elevate Web Builder.
感谢这两个项目,您可以在对象pascal中编码,然后JavaScript将从pascal源编译,然后使用HTML本地存储.例如参见this article about using storage with Smart/OP4JS – 我已经测试过它(在Alpha中),它运行得很好:你有一个纯粹的独立HTML文件,它可以在没有任何服务器的情况下运行,并且具有本地存储. SQLite3存储计划(尚未完成).