摘要:因?yàn)槭且粭l數(shù)據(jù)記錄,也就是說,相當(dāng)于是一個(gè)數(shù)據(jù)集。通常我們需要重載函數(shù),聲明,以及通過或?yàn)橐晥D指定根元素。通過綁定視圖的函數(shù)到模型的事件模型數(shù)據(jù)會(huì)即時(shí)的顯示在中。實(shí)例屬性參數(shù)以及類屬性參數(shù)會(huì)被直接注冊到集合的構(gòu)造函數(shù)。
對于初學(xué)backbone.js的同學(xué)可以先參考我這篇文章:Backbone.js學(xué)習(xí)筆記(一)
Backbone源碼結(jié)構(gòu)1: (function() { 2: Backbone.Events // 自定義事件 3: Backbone.Model // 模型構(gòu)造函數(shù)和原型擴(kuò)展 4: Backbone.Collection // 集合構(gòu)造函數(shù)和原型擴(kuò)展 5: Backbone.Router // 路由配置器構(gòu)造函數(shù)和原型擴(kuò)展 6: Backbone.History // 路由器構(gòu)造函數(shù)和原型擴(kuò)展 7: Backbone.View // 視圖構(gòu)造函數(shù)和原型擴(kuò)展 8: Backbone.sync // 異步請求工具方法 9: var extend = function (protoProps, classProps) { ... } // 自擴(kuò)展函數(shù) 10: Backbone.Model.extend = Backbone.Collection.extend = Backbone.Router.extend = Backbone.View.extend = extend; // 自擴(kuò)展方法 11: }).call(this);JS MVC職責(zé)劃分
M 模型
業(yè)務(wù)模型:業(yè)務(wù)邏輯、流程、狀態(tài)、規(guī)則 (核心)數(shù)據(jù)模型:業(yè)務(wù)數(shù)據(jù)、數(shù)據(jù)校驗(yàn)、增刪改查(AJAX)
V 視圖
(核心)視圖:定義、管理、配置 模板:定義、配置、管理 組件:定義、配置、管理 (核心)用戶事件配置、管理 用戶輸入校驗(yàn)、配置、管理
C 控制器/分發(fā)器
(核心)事件分發(fā)、模型分發(fā)、視圖分發(fā) 不做數(shù)據(jù)處理、業(yè)務(wù)處理,即業(yè)務(wù)無關(guān) 擴(kuò)展:權(quán)限控制、異常處理等 C是JSMVC框架的核心,實(shí)現(xiàn)集中式配置和管理,可以有多個(gè)控制器
工具庫
主要是異步請求、DOM操作,可以依賴于jQuery等
來源:http://www.cnblogs.com/nuysoft/archive/2012/03/14/2395272.html
Model指的是一條一條的數(shù)據(jù),而集合Collection指的是對Model中的多條數(shù)據(jù)進(jìn)行管理。
模型 Model我們用Backbone.Model表示應(yīng)用中所有數(shù)據(jù),models中的數(shù)據(jù)可以創(chuàng)建、校驗(yàn)、銷毀和保存到服務(wù)端。
對象賦值的方法1、直接定義,設(shè)置默認(rèn)值
Trigkit = Backbone.Model.extend({ initialize : function () { alert("hi!"); }, defaults:{ age : "22", profession : "coder" } }); var coder = new Trigkit; alert(coder.get("age"));//22
2、 賦值時(shí)定義
對象中的方法
當(dāng)模型實(shí)例化時(shí),他的initialize方法可以接受任意實(shí)例參數(shù),其工作原理是backbone模型本身就是構(gòu)造函數(shù),所以可以使用new生成實(shí)例:
var User = Backbone.Model.extend({ initialize: function (name) { this.set({name: name}); } }); var user = new User("trigkit4"); alert(user.get("name"), "trigkit4");//trigkit4
看下backbone的源碼:
var Model = Backbone.Model = function(attributes, options) { var attrs = attributes || {}; options || (options = {}); this.cid = _.uniqueId("c"); this.attributes = {}; if (options.collection) this.collection = options.collection; if (options.parse) attrs = this.parse(attrs, options) || {}; attrs = _.defaults({}, attrs, _.result(this, "defaults")); this.set(attrs, options); this.changed = {}; this.initialize.apply(this, arguments); }; initialize: function(){},//initialize是默認(rèn)的空函數(shù)Model 的事件綁定
為了能及時(shí)更新view,我們需要通過事件綁定機(jī)制來處理和響應(yīng)用戶事件:
關(guān)于事件綁定,有on,off,trigger,once,listenTo,stopListening,listenToOnce等方法,具體參照:http://documentcloud.github.io/backbone/#Events
集合 CollectionBackbone.Collection就是一個(gè)Model對象的有序集合。因?yàn)?b>Model是一條數(shù)據(jù)記錄,也就是說,Collection相當(dāng)于是一個(gè)數(shù)據(jù)集。具有增加元素,刪除元素,獲取長度,排序,比較等一系列工具方法,說白了就是一個(gè)保存models的集合類。
collection.model覆蓋此屬性來指定集合中包含的模型類??梢詡魅朐紝傩詫ο螅ê蛿?shù)組)來 add, create,和 reset,傳入的屬性會(huì)被自動(dòng)轉(zhuǎn)換為適合的模型類型。
Backbone.View中可以綁定dom元素和客戶端事件。頁面中的html就是通過views的render方法渲染出來的,當(dāng)新建一個(gè)view的時(shí)候通過要傳進(jìn)一個(gè)model作為數(shù)據(jù)
view.$el:一個(gè)視圖元素的緩存jQuery對象。 一個(gè)簡單的引用,而不是重新包裝的DOM元素。一個(gè)簡單的View:
Document
elview.el所有的視圖都擁有一個(gè) DOM 元素(el 屬性),即使該元素仍未插入頁面中去。 視圖可以在任何時(shí)候渲染,然后一次性插入 DOM 中去,這樣能盡量減少 reflows 和 repaints 從而獲得高性能的 UI 渲染。 this.el 可以從視圖的 tagName, className, id 和 attributes 創(chuàng)建,如果都未指定,el 會(huì)是一個(gè)空 div。 --官網(wǎng)
擴(kuò)展方法 extend模型、集合、視圖、路由器都有一個(gè)extend方法,用于擴(kuò)展原型屬性和靜態(tài)屬性,創(chuàng)建自定義的模型、集合、視圖、路由器類。
Backbone.Model.extendBackbone.Model.extend(properties, [classProperties])
要?jiǎng)?chuàng)建自己的 Model 類,你可以擴(kuò)展 Backbone.Model 并提供實(shí)例 properties(屬性) , 以及可選的可以直接注冊到構(gòu)造函數(shù)的classProperties(類屬性)。
Backbone.View.extendBackbone.View.extend(properties, [classProperties])
開始創(chuàng)建自定義的視圖類。 通常我們需要重載 render 函數(shù),聲明 events, 以及通過 tagName, className, 或 id 為視圖指定根元素。 Backbone.View通過綁定視圖的 render 函數(shù)到模型的 "change" 事件 — 模型數(shù)據(jù)會(huì)即時(shí)的顯示在 UI 中。
Backbone.Collection.extendBackbone.Collection.extend(properties, [classProperties])
通過擴(kuò)展 Backbone.Collection 創(chuàng)建一個(gè) Collection 類。實(shí)例屬性參數(shù) properties 以及 類屬性參數(shù) classProperties 會(huì)被直接注冊到集合的構(gòu)造函數(shù)。
Backbone.Router.extendBackbone.Router.extend(properties, [classProperties])
開始創(chuàng)建一個(gè)自定義的路由類。當(dāng)匹配了 URL 片段便執(zhí)行定義的動(dòng)作,并可以通過 routes 定義路由動(dòng)作鍵值對。
Router與controllercontroller是Backbone 0.5以前的叫法,現(xiàn)在改名叫Router了。
Backbone.Router 為客戶端路由提供了許多方法,并能連接到指定的動(dòng)作(actions)和事件(events)。
頁面加載期間,當(dāng)應(yīng)用已經(jīng)創(chuàng)建了所有的路由,需要調(diào)用 Backbone.history.start()
查看下面示例:
在瀏覽器里打開頁面后,在url的html后面依次加上:
#/index #/task/1 #/test/xxxx
將分別彈出出:index, 1, test/xxxx
這就是Router的功能。
backbone github官網(wǎng):http://documentcloud.github.io/backbone/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/85626.html
摘要:它通過數(shù)據(jù)模型進(jìn)行鍵值綁定及事件處理,通過模型集合器提供一套豐富的用于枚舉功能,通過視圖來進(jìn)行事件處理及與現(xiàn)有的通過接口進(jìn)行交互。 本人兼職前端付費(fèi)技術(shù)顧問,如需幫助請加本人微信hawx1993或QQ345823102,非誠勿擾 1.為初學(xué)前端而不知道怎么做項(xiàng)目的你指導(dǎo) 2.指導(dǎo)并扎實(shí)你的JavaScript基礎(chǔ) 3.幫你準(zhǔn)備面試并提供相關(guān)指導(dǎo)性意見 4.為你的前端之路提供極具建設(shè)性的...
摘要:使用和架構(gòu)創(chuàng)建一個(gè)典型的項(xiàng)目。屬性被賦值給傳入的函數(shù)運(yùn)行的結(jié)果。渲染,我們使用,這是一個(gè)對象,它指向的屬性,使用函數(shù)使用的結(jié)果替換。最后,啟動(dòng)整體應(yīng)用,為了保證完全加載,用包裝器調(diào)用完整日常練習(xí)一些在對象初始化的時(shí)候執(zhí)行的代碼 使用Backbone.js 和 MVC 架構(gòu)創(chuàng)建一個(gè)典型的Hello world項(xiàng)目。雖然是殺雞用牛刀了,畢竟是我第一次使用Backbone.js 依賴 ...
摘要:數(shù)據(jù)更新的時(shí)候,支持多事件和自定義事件。然后使用兩個(gè)事件和的自定義事件。我們將使用別名函數(shù)。是為了模擬從服務(wù)器獲取響應(yīng)的時(shí)間。在它內(nèi)部里面,使用和返回模型屬性把選中的模型賦值給當(dāng)前視圖的模型。 前言: 我們繼續(xù)使用上一次寫的圖書案例,在基礎(chǔ)上面進(jìn)行改進(jìn)! 事件綁定 在我們?yōu)g覽網(wǎng)頁的時(shí)候,獲取數(shù)據(jù)并不是一下只就全部獲取到的,為了創(chuàng)建一個(gè)更好的用戶體驗(yàn),就來模擬一個(gè)加載(Spi...
摘要:中添加攔截器配置如下攔截所有請求,也就是,只攔截開頭的請求。在中并沒有提供配置文件的方式來配置攔截器,因此需要使用的代碼式配置,配置如下這個(gè)屬性通常并不需要手動(dòng)配置,高版本的會(huì)自動(dòng)檢測第四點(diǎn)講下靜態(tài)資源映射。 以下內(nèi)容,如有問題,煩請指出,謝謝 上一篇講解了springboot的helloworld部分,這一篇開始講解如何使用springboot進(jìn)行實(shí)際的應(yīng)用開發(fā),基本上尋著sprin...
摘要:框架本身可以很好地支持自下而上的單元測試。在中,這些原因可以分為性能真實(shí)的操作,依靠定時(shí)行為及網(wǎng)絡(luò)活動(dòng)減慢了測試隔離單元測試應(yīng)把重點(diǎn)放在小的一塊功能成為可能,并解耦不可靠的或低依賴使用對象是擁抱和的基本組成部分。 最近在慢慢深入Backbone,也試著寫一些測試,找一些合適的文檔來學(xué)習(xí)。于是就找到了一個(gè)系列的文章 : Testing Backbone applications with...
閱讀 1786·2021-11-15 11:37
閱讀 3072·2021-11-04 16:05
閱讀 1926·2021-10-27 14:18
閱讀 2760·2021-08-12 13:30
閱讀 2501·2019-08-29 14:18
閱讀 2088·2019-08-29 13:07
閱讀 2027·2019-08-27 10:54
閱讀 2730·2019-08-26 12:15