0

ここでは、クローズドネットワーク上で実行され、Chromeに固有のサーバーベースのアプリケーションを作成する必要があります。ここで、WebSQLを使用するか(開発時間を確実に節約できます)、IndexedDBを使用するか(知識があまりありません)を決定する必要があります。

Chromeが機能バージョンでWebSQLを引き続きサポートすることをどのように確認できますか?または、クライアントをサポートバージョンに制限する必要があります。これは、長期的なビジネス関係には適していません。

IndexedDBを学習するための優れたチュートリアルやガイドも教えてください...

そして、w3cがwebSQLのサポートを停止した理由を理解できませんでした。誰か知ってる?

4

3 に答える 3

1

WebSqlは、 2010年11月18日以降、W3Cによって維持されている標準ではなくなりました。

このドキュメントはW3C勧告トラックにありましたが、仕様作業は停止しました。仕様は行き詰まりました。関心のあるすべての実装者は同じSQLバックエンド(Sqlite)を使用しましたが、標準化パスに沿って進むには、複数の独立した実装が必要です。

これは私が維持しているgithubプロジェクトへのリンクであり、データベースの作成、データの挿入、取得、更新、削除などのIndexedDBの基本機能の例があります。ChromeとFirefoxの最新バージョンで動作するように更新しました

于 2012-08-30T13:29:39.737 に答える
0

実際、IndexedDBを使用すると、先に進むときに時間を節約できます。バージョン管理によってバージョンを変更するのは非常に簡単です。

チュートリアルについては、私自身のhttp://dev.yathit.com/ydn-db/starting/query.htmlを本当にお勧めします。これはチュートリアルのjavascript indexeddbラッパーですが、非常にすばやく理解して感じることができます。Chrome、Safari、Firefoxで読み、開発コンソールを開き、コードスニペットをコピーして貼り付け、少し変更します。キー範囲の重要性を理解することは非常に重要です。キーの生成とカーソルの反復のフィルタリングにはいくつかのトリックがあります。

WebSQLのクエリ結果がJSONとは大きく異なるためだと思います。NoSQLでは、JSONオブジェクトを永続化するだけの場合に、なぜTABLEを定義する必要があるのか​​が非常に愚かです。IndexedDBは、WebSQLと比較して非常にシンプルで、非常に軽量です。

于 2012-09-03T15:42:43.207 に答える
0

私は数年遅れていますが、直接回答されていないOPの質問に回答し、役立つ提案を追加すると役立つと思いました:)。

Chromeが機能バージョンでWebSQLを引き続きサポートすることをどのように確認できますか?

私の知る限り、特定のブラウザーベンダーがテクノロジーまたはAPIのサポートをいつ終了するかを決定する方法はありません。ただし、ベンダーは、開発者に通知する前に、開発者に通知するのが通例です(数か月または数年程度)。

webSQLを使用する必要がありますか?

要するに、違います。Deni Spasovskiの回答以来、WebSQLの非推奨に関するすべてのことは今でも続いています。一方、IndexedDBは、すべての主要なブラウザベンダーのサポートを享受しています。だから後者と一緒に行きなさい。

ただし、2つのデータベース間の決定は、必ずしも行わなければならない決定ではないことを指摘しておく必要があります。クライアントマシンで利用可能なデータベースを利用するライブラリを選択(または作成)するだけです。

BakedGoodsは、ここですでに提案されているライブラリとはいくつかの点で異なります。最も適切なのは、使用するストレージタイプを明示的に指定できるようにすることで、開発者が意思決定プロセスに他の要素(パフォーマンス特性など)を導入できるようにすることです。

これを使用すると、サポートされているデータベースタイプのいずれかでストレージ操作を実行することが問題になります...

...両方のデータベースタイプに適切な操作オプションと同等の構成を指定します。

//If the operation is a set(), and the referenced structures 
//don't exist, they will be created automatically.

var webSQLOptionsObj = {
    databaseName: "Example_DB",
    databaseDisplayName: "Example DB",
    databaseVersion: "",
    estimatedDatabaseSize: 1024 * 1024,
    tableData: {
        name: "Main",
        keyColumnName: "lastName",
        columnDefinitions: "(lastName TEXT PRIMARY KEY, firstName TEXT)"
    }, 
    tableIndexDataArray: [name: "First_Name_Index", columnNames: "(firstName)"]
};

var indexedDBOptionsObj = {
    databaseName: "Example_DB",
    databaseVersion: 1,
    objectStoreData: {
        name: "Main",
        keyPath: lastName,
        autoIncrement: false
    },
    objectStoreIndexDataArray: [
        {name: "First_Name_Index", keyPath: "firstName", unique: false, multiEntry: false}
    ],
};

var optionsObj = {
    conductDisjointly: false, 
    webSQL: webSQLOptionsObj, 
    indexedDB: indexedDBOptionsObj
};

...そして操作を行う:

bakedGoods.set({
    data: [
        {value: {lastName: "Obama", firstName: "Barack"}}, 
        {value: {lastName: "Biden", firstName: "Joe"}}
    ],
    storageTypes: ["indexedDB", "webSQL"],
    options: optionsObj,
    complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});

そのシンプルなインターフェイスと比類のないストレージ施設のサポートは、一部のストレージ施設固有の構成のサポートが不足しているという犠牲を払って提供されます。たとえば、複数列の主キーを持つWebSQLテーブルでのストレージ操作の実行はサポートされていません。

したがって、これらのタイプの機能を多用する場合は、他の場所を探すことをお勧めします。

ああ、そして完全な透明性のために、BakedGoodsは本当にあなたによって維持されています:)。

于 2016-07-10T18:52:34.233 に答える