2013-02-18 60 views
1

我正在開發使用Titanium的應用程序並試圖實施CommonJS方法。我喜歡模塊化設置,但是我想知道如何處理像購物車這樣的事情:臨時的,用戶創建的數據,需要在應用程序的整個生命週期內持續使用。如何在使用CommonJS時存儲應用程序範圍的變量?

我可以看到三種方法: 1.爲這種Cart創建一個特殊模塊。它將在第一次需要()d時創建,並且您可以通過從這些模塊中require()來從任何其他模塊訪問當前狀態的購物車。

  1. 將準全局Cart對象傳遞給每個需要它的模塊。這違背了CommonJS的文字和精神。

  2. 使用Ti.App.Properties將購物車存儲在本地內存中。這樣,即使用戶退出應用程序,購物車也會保留。

任何想法什麼是最好的?

回答

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(); 

這創造了一種單的其中創建了第一次你調用它,它一直保持,直到應用程序結束(從內存中刪除),或者你實現清晰的方法和自行清潔。你也可以使用這個單例來保存數據,這取決於你要實現哪些部分。這與你的第一個想法很相似。

你的第二個想法有幾個缺點,因爲數據訪問沒有封裝到模塊中,數據總是被保存下來,所以你需要檢測它是否是舊的並且可以被刪除。

最後這取決於你的任務。你是否需要persisten存儲,你應該將模塊與數據庫結合起來。你只需要在運行時需要這些信息,該模塊就足夠了。

+0

哇,謝謝你的精確和周到的回答先生VVoo。 – Wytze 2013-02-18 17:15:43

相關問題