Delphi + Intrawebを使用して、ブラウザストレージ(webSQL / IndexedDB)を備えたHTML5オフラインアプリケーション(キャッシュマニフェスト)を作成できますか?
-
27-10-2019 - |
質問
現在のIntrawebアプリケーションは、実際にはDataSnapクライアントであり、同じマシン上のInterbaseサーバーに接続して一緒に配置するDataSnapサーバーに接続します。正しく動作しますが、非常に遅く、動作するには一定のインターネット接続が必要です。ボタンがクリックされるか、イベントがトリガーされるたびに、ブラウザがWebサーバー(Intraweb)に接続する必要があります。
Delphi XE2のIntraweb、HTML5キャッシュマニフェスト機能を使用してオフラインWebアプリケーションを作成し、モバイルデバイスがオフラインになったときにローカルブラウザーストレージとしてブラウザーベースのSQLストレージ(webSQLやIndexedDBなど)を使用することを考えています。 DataSnapサーバーへの初期化または同期を行うためにインターネット接続が利用可能な場合にのみ、実際のDataSnapサーバーに接続します。
可能ですか?
私の主な問題は、イントラWeb WebアプリケーションからWebページのURLを取得することであり、ブラウザのすべてのストレージコードをテンプレートファイル内に配置したくありません。
Intrawebによって生成されたJavaScriptコードを他のjsファイルに移動するのも非常に面倒です。これを行うと、Intrawebアプリケーションのコードとロジックが破損する可能性があります。これに関する回避策はありますか?
解決
ご自身で述べたように、「ボタンがクリックされるか、イベントがトリガーされるたびに、ブラウザがWebサーバーに接続する必要があります」。
これはIntraWebの設計です。ほとんどのコードロジックがサーバー側で実行されるクライアントサーバーアプリケーションです。アプリケーションにいくつかのAJAXウィジェットを追加できますが、IntraWeb自体はサーバー側のフレームワークです。
完全なHTML5AJAXクライアントアプリケーションをスタンドアロンで実行できるようにするには、純粋なJavaScriptアプリケーションが必要です。 Sacha / ExtJSベースのAJAXフレームワーク( ExtPascal や
しかし、純粋なHTML5 JavaScriptアプリケーションを作成するのは難しい作業ですが、JavaScriptからDataSnapコンテンツを(XMLまたはJSONを使用して)使用できるため、可能です。 JavaScriptアプリケーションを作成するための優れたIDEおよびプラットフォームである
HTML5アプリケーションを切断するには、次の製品がリリースされるまで待つ必要がある場合があります。
-
スマート別名OP4JS; - WebBuilderを昇格します。
これら2つのプロジェクトのおかげで、オブジェクトpascalでコーディングし、JavaScriptをpascalソースからコンパイルして、HTMLローカルストレージを使用できるようになります。たとえば、Smart / OP4JSでのストレージの使用に関する
この記事を参照してください。 -私はそれを(Alphaで)テストしましたが、非常にうまく機能します。サーバーなしで実行でき、ローカルストレージを持つ純粋なスタンドアロンHTMLファイルがあります。 SQLite3ストレージが計画されています(まだ完了していません)。