我对以下单页 Web 应用案例的实用建议和最佳实践感兴趣。
- 有没有更好的方法来处理这些事件?
- 我已经抽象了 ShoppingCart 对象并使用了原型模式,因此我可以在将来扩展它以使用任何指定的框架,如 jQuery、下划线、Zepto 或其他任何东西。有没有更好的办法?
我将 jQuery/jQuery Mobile 用于单页购物车。当然,购物车有多个可以通过 AJAX 调用注入的伪页面。一个页面主要由一个表单和一些网格组成。视图是在服务器端生成的。
主要ShoppingCart
对象是抽象的,可以单独使用 jQuery,也可以使用 jQuery 和 jQuery Mobile。
它看起来像这样:
var ShoppingCart = function(){
// Some general vars.
}
ShoppingCart.prototype.init = function(){
this.router();
}
该router
方法处理当前页面事件和动作,例如绑定事件或绘制某些动态 HTML 元素。
ShoppingCart.prototype.router = function(){
switch(this.currentPageId()){
case 'productPage':
this.bindProductQty();
this.bindProductPricingOptionsElements();
this.bindOrderButton();
break;
case 'checkoutPage':
this.bindDeleteProduct();
this.paintStates();
// [...]
break;
// [...]
}
}
使用 jQuery Mobile 初始化示例:
var myShoppingCart = new ShoppingCart();
// Override some of the original methods methods.
myShoppingCart.paintPopup = function( msg, options ) {
return $.dynamic_popup(msg);
}
myShoppingCart.paintPaymentMethods = function(){
ShoppingCart.prototype.paintPaymentMethods();
// Refresh the menu in jQuery Mobile.
$('#payment').selectmenu('refresh');
}
// [...]
// Init the ShoppingCart using jQuery Mobile
// myShoppingCart.setDebug(true);
myShoppingCart.init();
PS:我还不熟悉 Node.js 或任何其他衍生产品。