1

データアクセスに関しては、いくつかの要件が組み合わされています。

  • 一部のデータをプリロードしreferenceます。
  • ブラウザの再起動後も参照データが必要であり、常にメモリをロードしないようにするためだけに参照データが必要です。私は現在、そのLocalStorageAdapterために を使用しています。
  • それを取得したら、 sync changes(ポーリングまたはSocket.IOバックグラウンドで使用し、LocalStorage を更新することでうまくいく可能性があります)
  • サーバーに直接アクセスして取得/保存する必要がある、よりトランザクション性の高いモデルが他にもあります。そのために RESTAdapter のようなものを使用するとよいでしょう。
  • 最後に、動作するはずの操作がいくつかあり、off-line後で変更を同期する必要があります。

より具体的にするには:

  • pre-loadお気に入りの製品」をローカル ストレージに売り込みます。私たちはそれらとオフラインで作業します。
  • サーバーの変更をベンダーおよび製品情報に同期する必要があります。
  • 完全なカタログを検索する場合は、オンラインである必要があります。
  • オフラインの場合、ユーザーがカートに何かを追加したり、送信して注文したりできるようにする必要があります。このアクションをキューに入れ、インターネットに接続したときに送信したいと考えています。

したがって、いくつかの質問がこれから導き出されます。

  • RESTAdapter を LocalStorage と組み合わせて使用​​する方法はありますか?
  • Socket.IO のサポートはありますか? (この部分を手動で行うことができてうれしいです)
  • キューイングのサポートはありますか? Ember-Data レベルが理想的です。

この作業の多くを手動で行い、さまざまなレゴ ピースを組み立てる必要があることは承知していますが、経験豊富な Ember 開発者からの視点を求めたいと思いました。

4

1 に答える 1

1

あなたは間違いなくこれを行うことができます。あなたが言ったように、すべてを組み立てるにはたくさんのレゴピースを作る必要があります.

RESTAdapter と LSAdapter を使用してハイブリッドを作成する必要があります。私の仕事でも少し似たようなことをしましたが、それは一方向にしか進みません (サーバーからクライアントへ、逆方向ではありません)。

そうは言っても、私はいくつかの質問をしたいと思います:

  1. localStorage にどれくらい保存する予定ですか? また、立ち退き計画は立てていますか? 実装はほとんどのブラウザーで同じですが (IE8 までは実装されていません)、ローカル ストレージは通常、ほとんどのブラウザーで小さいです。IndexedDB を使用すると、はるかに大きなスペースが得られますが、実装は IE の新しいバージョンまで利用できません。

  2. パフォーマンスのニーズに応じて、最初に localStorage を保存してからサーバーに永続化を試みることをお勧めします。それが機能する場合は localStorage からポップし、アダプターが後で試行できるようにそこに残さない場合。(Ember のスケジュールまたは scheduleOnce、または実行ループ内で機能する他の便利なヘルパーhttp://emberjs.com/api/classes/Ember.run.html#method_scheduleの使用を検討します)。

     Called by the store when a newly created record is
     `save`d.
    
     It serializes the record, and `POST`s it to a URL generated by `buildURL`.
    
     See `serialize` for information on how to customize the serialized form
     of a record.
    
    createRecord: function(store, type, record) {
    
     var data = {};
     var serializer = store.serializerFor(type.typeKey);
    
     serializer.serializeIntoHash(data, type, record, { includeId: true });
     // build up a model that knows the url, the method, and the data to post
     // store it to local storage in some queue to save
     // schedule it to save to server later, keep track of the record since you'll
     // need to update the record with new information later that could come down 
     // from the server
     return this.ajax(this.buildURL(type.typeKey), "POST", { data: data });
    },
    

正直なところ、ID を実際にサーバーに保存しない場合に ID を処理する方法が最も難しいと思います。幸運を

于 2013-10-19T03:52:03.543 に答える