摘要:描述的是的當(dāng)前狀態(tài)。持久化可以允許我們編輯和更新模型保存其最新?tīng)顟B(tài)在內(nèi)存中用戶的數(shù)據(jù)存儲(chǔ)中或者與數(shù)據(jù)庫(kù)同步。引用到集合模型過(guò)濾所有被查看過(guò)的圖片過(guò)濾所有未被查看過(guò)的圖片視圖視圖是模型的可視化表示視圖是關(guān)于構(gòu)建和維護(hù)一個(gè)元素。
1. MVCjavascript三個(gè)非常重要的架構(gòu)模式:
MVC(模型-視圖-控制器) backbone
MVP(模型-視圖-表示器)
MVVM(模型-視圖-視圖模型)
1.1 Model(模型)將業(yè)務(wù)數(shù)據(jù)(Model),用戶界面(View)隔離,(Controller)管理邏輯和用戶輸入
Model 代表特定于領(lǐng)域的數(shù)據(jù),不了解用戶界面(View(視圖),Controller(控制器)).當(dāng)一個(gè)Model(模型)改變時(shí),它會(huì)通知它的觀察者。
View 描述的是Model的當(dāng)前狀態(tài)。Observer模式用于讓View了解Model什么時(shí)候更新或修改
Presentation由View關(guān)注,但不只是單個(gè)View(視圖)和Controller(控制器),屏幕上顯示的每個(gè)部分或者元素都需要View-Controller對(duì)。
Controller 在這個(gè)View-Controller對(duì)中的作用是處理用戶交互(如按鍵和點(diǎn)擊等動(dòng)作),為View做決定。
使用Backbone實(shí)現(xiàn)的一個(gè)非常簡(jiǎn)單的Model(模型)
var Photo = Backbone.Model.extend({ //photo的默認(rèn)屬性 defaults: { src: "placeholder.jpg", caption: "A default image", viewed: false }, //確保每個(gè)photo都有一個(gè)src initialize: function(){ this.set({"src": this.defaults.src}); } });
在實(shí)際應(yīng)用程序中使用Model(模型)時(shí),我們一般也要求Model(模型)具持久化。持久化可以允許我們編輯和更新Model(模型),保存其最新?tīng)顟B(tài)在內(nèi)存中、用戶的localStorage數(shù)據(jù)存儲(chǔ)中或者與數(shù)據(jù)庫(kù)同步。
一個(gè)Model(模型)可能有多個(gè)觀察它的View(視圖)。
在集合組(Backbone)里管理Model(模型)允許我們根據(jù)從組中收到的通知編寫(xiě)應(yīng)用程序邏輯,該組中包含的所有Model(模型)都應(yīng)被改變。
var PhotoGallery = Backbone.Collection.extend({ //引用到集合模型 model: Photo, //過(guò)濾所有被查看過(guò)的圖片 viewed: function(){ return this.filter(function(photo){ return photo.get("viewed"); }); }, //過(guò)濾所有未被查看過(guò)的圖片 unviewed: function(){ return this.without.apply(this, this.viewed()); } });1.2 View(視圖)
視圖是Model(模型)的可視化表示,JavascriptView視圖是關(guān)于構(gòu)建和維護(hù)一個(gè)DOM元素。1.3 Controller(控制器) 2. MVP 3. MVVM
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78875.html
摘要:當(dāng)前有超過(guò)個(gè)框架,但是其中很多沒(méi)有使用。扮演了的角色,使用處理用戶輸入同時(shí)檢索數(shù)據(jù)為數(shù)據(jù)格式化,用于展現(xiàn)類似,提供了和之間的數(shù)據(jù)綁定借鑒了其他模式,沒(méi)有特定的名稱。 https://speakerdeck.com/addyosmani/digesting-javascript-mvc 這里看了一個(gè)關(guān)于js mvc框架的ppt,作者是一位google的工程師,感覺(jué)挺全面挺有意思,適合像我...
摘要:首先我們要大概搞清楚一些什么模式。什么模式是等的一個(gè)統(tǒng)稱,它們各有不同,但本質(zhì)上其實(shí)是一個(gè)東西。不關(guān)心它會(huì)被如何顯示或是如何被操作。效果圖如下,我們只關(guān)心功能實(shí)現(xiàn),所以樣式丑我們先忍一下。 假如讓你不依托任何前端框架(React/Vue/Angular等等),單純用Javascript編寫(xiě)一個(gè)網(wǎng)站應(yīng)用,你還知道怎么開(kāi)發(fā)嗎? 舉個(gè)例子,產(chǎn)品經(jīng)理讓你實(shí)現(xiàn)一個(gè)網(wǎng)頁(yè),上面有一張貓咪的圖片,貓咪...
摘要:如何同步的變更。在沒(méi)有環(huán)境下對(duì)進(jìn)行單元測(cè)試的時(shí)候,業(yè)務(wù)邏輯的正確性是無(wú)法驗(yàn)證的更新的時(shí)候,無(wú)法對(duì)的更新操作進(jìn)行斷言。對(duì)是通過(guò)接口進(jìn)行,在對(duì)進(jìn)行不依賴環(huán)境的單元測(cè)試的時(shí)候。這里根據(jù)上面的例子給出了的單元測(cè)試樣例。 前言 做客戶端開(kāi)發(fā)、前端開(kāi)發(fā)對(duì)MVC、MVP、MVVM這些名詞不了解也應(yīng)該大致聽(tīng)過(guò),都是為了解決圖形界面應(yīng)用程序復(fù)雜性管理問(wèn)題而產(chǎn)生的應(yīng)用架構(gòu)模式。 網(wǎng)上很多文章關(guān)于這方面的討...
閱讀 1245·2021-11-24 09:39
閱讀 390·2019-08-30 14:12
閱讀 2602·2019-08-30 13:10
閱讀 2446·2019-08-30 12:44
閱讀 972·2019-08-29 16:31
閱讀 856·2019-08-29 13:10
閱讀 2448·2019-08-27 10:57
閱讀 3163·2019-08-26 13:57