亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JavaScript的Backbone.js框架的一些使用建議整理

2019-11-20 10:36:04
字體:
來源:轉載
供稿:網友

Backbone 為復雜Javascript應用程序提供模型(models)、集合(collections)、視圖(views)的結構。其中模型用于綁定鍵值數據和自定義事件;集合附有可枚舉函數的豐富API; 視圖可以聲明事件處理函數,并通過RESTful JSON接口連接到應用程序。
當我們開發含有大量Javascript的web應用程序時,首先你需要做的事情之一便是停止向DOM對象附加數據。 通過復雜多變的jQuery選擇符和回調函數創建Javascript應用程序,包括在HTML UI,Javascript邏輯和數據之間保持同步,都不復雜。 但對付客戶端應用來說,良好的架構通常是有很多益處的。
Backbone將數據呈現為模型, 你可以創建模型、對模型進行驗證和銷毀,甚至將它保存到服務器。 當UI的變化引起模型屬性改變時,模型會觸發"change"事件; 所有顯示模型數據的視圖會接收到該事件的通知,繼而視圖重新渲染。 你無需查找DOM來搜索指定id的元素去手動更新HTML。 ―旦模型改變了,視圖便會自動變化。
backbone.js提供了一套web開發的框架,通過Models進行key-value綁定及custom事件處理,通過Collections提供一套豐富的API用于枚舉功能,通過Views來進行事件處理及與現有的Application通過RESTful JSON接口進行交互.它是基于jquery和underscore的一個js框架。

Backbone天生就不固執己見。你從文檔上獲取的一個最基本觀點是:使用backbone.js提供的工具,做任何你想做的事。

這點非常好,因為有這么多不同的應用場合,而且對于開始寫app來說也非常容易。這種途徑可能避免我們在剛開始時犯盡可能少的錯誤。

當一件事做錯的時錯,我們要發現并找到改正的方法。

下面這些提示,可以讓你避免我們在進行Backbone.js開發時所碰到錯誤:

1. 視圖(Views)是數據無關的(Data-Less)

數據屬于模型(models)不是視圖。下次你發現 你在一個視圖中存儲數據(或者更糟:在DOM里),馬上把它移到model里。

如果你沒有model,創建一個非常簡單:

this.viewState = new Backbone.Model();

真的不需要任何其它操作。

你可以在你的數據上偵聽改變事件,甚至跟你的服務器在線同步。

2. DOM事件只改變models

當一個DOM事件觸發時,比如點擊了一個按鈕,不要讓它改變view本身。改變這個model.

改變DOM且不改變狀態意味著你的狀態還存儲在DOM中。這條規則可以讓你保持狀態一致。

如果點擊了一個“加載更多”邊接,不要展開視圖,只需要改變model:

this.viewState.set('readMore', true);

好了,但是視圖何時發生改變?好問題,下一條規則會回答。

3.DOM只有在model發生改變時才改變

事件是很神奇的,請使用他們。最簡單的方法是每次改變后觸發一遍。

this.listenTo(this.stateModel, 'change', this.render);

更好的方法是只有在需要的時侯觸發改變。

this.listenTo(this.stateModel, 'change:readMore', this.renderReadMore);

這個視圖會一直同他的model保持一致。無論model是如何改變的:從命令接口或調試信息處響應動作,這個視圖會一直保持更新。

4. 綁定的東西必須解綁

當視圖從DOM上移除時,使用'remove'方法,它必須從所有綁定的事件上解綁上。

如果你使用'on'綁定,你的職責是使用'off'去解綁。如果沒有解綁,內存回收器無法釋放內存,從而造成你應用的性能下降。

這就是'listenTo'的由來。它會跟蹤視圖的綁定和解綁。Backbone把這個從DOM移動之前,會進行'stopListening'。

// Ok:this.stateModel.on('change:readMore', this.renderReadMore, this); // 神奇:this.listenTo(this.stateModel, 'change:readMore', this.renderReadMore);


5. 保持鏈式寫法

從render和remove方法里,總是返回'this'。這樣可以讓你寫方法鏈。

view.render().$el.appendTo(otherElement);

這很方法,不要打破它。

6. 事件比回調要好

等待響應事件比回調要好

Backbone模型(models)默認會觸發'sync'和'error'事件,因此可以使用這些事件代替回調??紤]一下這兩種情況。

model.fetch({ success: handleSuccess, error: handleError});//這種更好:view.listenTo(model, 'sync', handleSuccess);view.listenTo(model, 'error', handleError);model.fetch();

model何時填充(fetched)并不重要,handleSucess/handleError會被調用。

7. Views是有作用域的

視圖永遠不要操作除了它本身以外的DOM。

view會引用它自己的DOM元素,如'el'或者jquery對象'$el'

那意味著你永遠不要直接使用jQuery:

$('.text').html('Thank you');

請把DOM元素的選擇限定到你自己的域里面:

this.$('.text').html('Thank you'); // 這等價于// this.$el.find('.text').html('Thank you');

如果你需要更新一個別的不同的視圖,只要觸發一個事件,讓別的視圖去做。你也可以使用Backbone的全局Pub/Sub系統。

例如,我們阻止頁面滾動:

var BodyView = Backbone.View.extend({ initialize: function() {  this.listenTo(Backbone, 'prevent-scroll', this.preventScroll); },  preventScroll: function(prevent) {  // .prevent-scroll 有下面的CSS規則: overflow: hidden;  this.$el.toggleClass('prevent-scroll', prevent); }}); // 現在從任何其他地方調用:Backbone.trigger('prevent-scroll', true);  // 阻止 scrollingBackbone.trigger('prevent-scroll', false); // 允許 scrolling

還有一件事

只要讀讀backbone的源代碼,你會學到更多??匆豢碽ackbone.js的源代碼,然后看看這些神奇的事情是怎么實現的。這個庫非常小,而且可讀性很好,整個讀完不會超過10分鐘的。

這些小貼士幫助我們寫干凈的,更好的可讀的代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情小视频| 福利一区福利二区微拍刺激| 2018日韩中文字幕| 亚洲欧美日韩国产成人| 在线观看免费高清视频97| 亚洲欧美在线播放| 精品亚洲永久免费精品| 国产成人精品综合久久久| 26uuu国产精品视频| 亚洲一区二区免费| 欧美成人在线免费| 午夜精品一区二区三区视频免费看| 国产成人免费av| 亚洲网站视频福利| y97精品国产97久久久久久| 久久久成人的性感天堂| 国产欧美日韩精品丝袜高跟鞋| 欧美极品少妇与黑人| 亚洲女人天堂视频| 精品亚洲一区二区三区在线观看| 日韩**中文字幕毛片| 激情亚洲一区二区三区四区| 国产91色在线|免| 国产视频久久久久| 日韩精品视频在线观看免费| 96sao精品视频在线观看| 亚洲天堂av网| 精品少妇v888av| 91av在线免费观看| 欧美在线免费观看| 亚洲一区二区三| 中文字幕日韩在线视频| 在线电影av不卡网址| 亚洲国产精品久久久久久| 亚洲日本aⅴ片在线观看香蕉| 欧美日韩免费在线观看| xxx欧美精品| 亚洲精品资源在线| 亚洲伦理中文字幕| xxav国产精品美女主播| 97人洗澡人人免费公开视频碰碰碰| 国产精品96久久久久久| 国产不卡在线观看| 在线日韩日本国产亚洲| 国产午夜一区二区| 亚洲精品xxx| 精品国产乱码久久久久久婷婷| 丝袜亚洲另类欧美重口| 在线视频免费一区二区| 成人性教育视频在线观看| 成人两性免费视频| 欧美激情高清视频| 国产精品2018| 欧美一区二区三区四区在线| 日韩电影在线观看中文字幕| 狠狠做深爱婷婷久久综合一区| 91亚洲精品在线观看| 亚洲最大激情中文字幕| 日本精品视频在线观看| 91久久精品美女高潮| 在线成人免费网站| 精品一区二区电影| 精品亚洲男同gayvideo网站| 在线精品高清中文字幕| 欧美寡妇偷汉性猛交| 欧美成人精品一区| 国产成人+综合亚洲+天堂| 九九热在线精品视频| 日韩在线观看免费全| 国产盗摄xxxx视频xxx69| 乱亲女秽乱长久久久| 亚洲成人av片| 国产精品久久久久久亚洲影视| 青青草原成人在线视频| 亲子乱一区二区三区电影| 国模极品一区二区三区| 亚洲成成品网站| 欧美最猛性xxxx| 亚洲欧美视频在线| 高清欧美一区二区三区| 精品国产欧美成人夜夜嗨| 九九综合九九综合| 午夜精品99久久免费| 国产精品高潮在线| 国产精品麻豆va在线播放| 不用播放器成人网| 91免费高清视频| 欧美日韩视频在线| 中文字幕日韩av电影| 欧美激情精品久久久久久蜜臀| 国产精品吊钟奶在线| 第一福利永久视频精品| 久久久久久伊人| 日韩高清av一区二区三区| 91麻豆国产语对白在线观看| 欧美疯狂性受xxxxx另类| 日韩中文字幕久久| 久久欧美在线电影| 久久精品视频亚洲| 日韩欧美视频一区二区三区| 国产日韩在线观看av| 日韩av免费在线观看| 国产成人精品国内自产拍免费看| 欧美在线视频免费播放| 国产成人中文字幕| 色综合久久久久久中文网| 亚洲精品影视在线观看| 欧美精品性视频| 久久综合久久美利坚合众国| 亚洲人成欧美中文字幕| 日本精品视频在线观看| 久久久久久久久综合| 欧美激情综合亚洲一二区| 亚洲第一级黄色片| 4p变态网欧美系列| 成人久久精品视频| 97在线观看视频| 欧美一区三区三区高中清蜜桃| 国产亚洲精品久久| 精品亚洲永久免费精品| 亚洲在线观看视频| 亚洲精品动漫久久久久| 日韩精品在线免费播放| 日韩精品久久久久| 亚洲国产精品va在线看黑人| 欧美日韩色婷婷| 亚洲欧美另类在线观看| 中文字幕精品一区二区精品| 欧美激情精品久久久久久蜜臀| 另类图片亚洲另类| 久久好看免费视频| 国产成人免费91av在线| 日本国产高清不卡| 国产日韩在线视频| 精品久久在线播放| 国产午夜精品理论片a级探花| 国内精品久久久久影院优| 亚洲国产精品一区二区久| 亚洲人精选亚洲人成在线| 欧美人与性动交a欧美精品| 日韩天堂在线视频| 亚洲三级 欧美三级| 日韩欧美a级成人黄色| 91视频九色网站| 亚洲综合最新在线| 久久精品久久精品亚洲人| 国语自产在线不卡| 国产精品无码专区在线观看| 国产精品午夜视频| 97香蕉久久夜色精品国产| 日韩精品久久久久久久玫瑰园| 人人澡人人澡人人看欧美| 国产精品一区二区久久精品| 欧美电影免费观看大全| 亚洲国产成人久久综合| 欧美日韩裸体免费视频| 国产91精品不卡视频| 亚洲精品久久久久久下一站| 国产成一区二区| 国产午夜精品视频免费不卡69堂| 亚洲色图五月天| 国产精品第二页| 精品国产91乱高清在线观看| 亚洲精品国产suv|