我正在使用Titanium开发应用程序并尝试实现CommonJS方法。我喜欢模块化设置,但我想知道如何最好地处理购物车之类的东西:临时的,用户创建的数据,需要持续应用程序的生命周期。
我可以看到三种方法: 1.为这样的购物车创建一个特殊模块。它将在第一次需要()d时创建,您可以通过require()从这些模块访问任何其他模块的当前状态的购物车。
将准全局Cart对象传递给需要它的每个模块。这违反了CommonJS的文字和精神。
使用Ti.App.Properties将购物车存储在本地存储器中。这样,即使用户退出应用程序,也会保留购物车。
对什么是最好的想法?
答案 0 :(得分: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方法并自行清理它。你也可以使用这个单例来保存数据,这取决于你要实现的部分。它与你的第一个想法类似。
您的第二个想法有几个缺点,因为数据访问不会封装到模块中,并且数据始终保持不变,因此您需要检测数据是否过时,是否可以删除。
最后,这取决于你的任务。您是否需要持久存储,您应该将模块与数据库结合使用。您是否仅在运行时需要此信息,模块就足够了。