1

Titaniumを使用してアプリを開発し、CommonJSアプローチを実装しようとしています。私はモジュラーセットアップが好きですが、ショッピングカートのようなもの、つまりアプリの存続期間を通じて持続する必要がある一時的なユーザー作成データをどのように処理するのが最善か疑問に思っています。

私は3つのアプローチを見ることができます:1。そのようなカートのための特別なモジュールを作成します。初めてrequire()dが作成され、他のモジュールからrequire()を実行することで、現在の状態のカートにアクセスできます。

  1. 準グローバルCartオブジェクトを、それを必要とするすべてのモジュールに渡します。これは、CommonJSの文字と精神に違反しています。

  2. Ti.App.Propertiesを使用して、カートをローカルメモリに保存します。このように、ユーザーがアプリを終了してもカートは保持されます。

何が最善かについて何か考えはありますか?

4

1 に答える 1

1

私が好む解決策は、次の方法でCommonJSモジュールを作成することです。

function ShoppingCart(options) {
    // do some setup for the shopping cart
}

ShoppingCart.prototype.add(product, qty)
    // add product to cart
}

ShoppingCart.prototype.remove(product, qty)
    // remove product from cart
}

ShoppingCart.prototype.clear()
    // empty cart (and create new, empty one)
}

// etc.

ShoppingCart = new ShoppingCart();

module.exports = ShoppingCart;

アクセスする方法は?

var Cart = require('path/to/ShoppingCart');
Cart.add();
Cart.remove();
Cart.clear();

これにより、最初に呼び出したときに作成される一種のシングルトンが作成され、アプリが終了する(メモリから削除される)か、clearメソッドを実装して自分でクリーンアップするまで保持されます。このシングルトンを使用してデータを永続化することもできます。実装するパーツはユーザー次第です。それはあなたの最初のアイデアに似ています。

2番目のアイデアには、データアクセスがモジュールにカプセル化されず、データが常に保持されるため、データが古くて削除できるかどうかを検出する必要があるため、いくつかの欠点があります。

最後に、それはあなたのタスクに依存します。モジュールをデータベースと組み合わせる必要がある永続ストレージが必要ですか。この情報は実行時にのみ必要ですか、モジュールで十分です。

于 2013-02-18T16:10:01.920 に答える