JQuery MVP是一種常見的模型視圖模式,通常用于創(chuàng)建可重用的JavaScript Web應(yīng)用程序。該模式的主要原則是將應(yīng)用程序分解為單個邏輯塊,這些邏輯塊可以獨(dú)立于其它組件進(jìn)行開發(fā)和維護(hù)。
var Model = function(){ this.data = []; this.listeners = [] }; Model.prototype = { addData: function(data){ this.data.push(data); this.notifyListeners(); }, getData: function(){ return this.data; }, attachListener: function(listener){ this.listeners.push(listener); }, notifyListeners: function(){ for(var i = 0; i< this.listeners.length; i++){ this.listeners[i].update(); } } };
上述代碼是一個MVP中的模型實(shí)現(xiàn)的示例。該模型具有addData,getData,attachListener和notifyListeners方法。通過addData方法,數(shù)據(jù)可以添加到模型中。getData方法返回整個數(shù)據(jù)集。通過attachListener方法,可以將監(jiān)聽器附加到模型中。通過notifyListeners方法,會通知已附加的所有監(jiān)聽器,以使它們的更新。
var View = function(model){ this.model = model; this.model.attachListener(this); }; View.prototype = { draw: function(){ var data = this.model.getData(); // 渲染數(shù)據(jù)到DOM }, update: function(){ this.draw(); } };
上述代碼是該模式中的視圖示例。視圖在創(chuàng)建時附加到模型中,以便在數(shù)據(jù)更新時能夠更新瀏覽器上的DOM。視圖實(shí)現(xiàn)了update和draw方法。update方法通知視圖進(jìn)行繪制,而draw方法實(shí)際渲染模型數(shù)據(jù)到DOM中。
var Presenter = function(model, view){ this.model = model; this.view = view; }; Presenter.prototype = { initialize: function(){ this.model.addData("hello MVP!"); this.view.draw(); } };
上述代碼顯示了MVP中的Presenter示例,它將模型和視圖組合在一起。Presenter在初始化過程中將數(shù)據(jù)添加到模型中,并繪制視圖。這樣,View就能夠顯示數(shù)據(jù),而Presenter能夠更新模型。
綜上所述,MVP模式允許您使用模型,視圖和Presenter組件來構(gòu)建可重用的JavaScript Web應(yīng)用程序。MVP的主要原則是,將應(yīng)用程序分解為單個邏輯塊,這些邏輯塊可以獨(dú)立于其它組件進(jìn)行開發(fā)和維護(hù)。