日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

用Backbone.js创建一个联系人管理系统(一)

發布時間:2025/3/13 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Backbone.js创建一个联系人管理系统(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文 Build a Contacts Manager Using Backbone.js: Part 1

在這個教程里我們將會使用Backbone.js,Underscore.js,JQuery創建一個完整的聯系人管理應用.

我們會看到如何使用Underscore.js的一些基本組件方便的來展現出Backbone.js的方法.

?

這些庫都是什么?

Backbone.js是一個Javascript的前端的MVC架構

Underscore.js是一個工具集,他對Javascript功能進行了一些增強.并且擴展了array,collection,function和object

的方法.

JQuery就不用多介紹.

那么開始吧

我們首先要創建一個根目錄,然在根目錄下創建子目錄包含css,img,和js來存儲相關文件.

完成后根目錄下創建一個html文件內容如下:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><title>Backbone.js Web App</title><link rel="stylesheet" href="css/screen.css" /></head><body><div id="contacts"></div><script src="js/jquery-1.7.1.min.js"></script><script src="js/Underscore-min.js"></script><script src="js/Backbone-min.js"></script><script src="js/app.js"></script></body> </html>

Backbone.js僅僅依賴Underscore.js但是我們這個項目還需要用到Jquery,另外我們的程序代碼會單獨寫在app.js里

另外我們項目樣式表會寫在screen.css里.

Backbone.js 來自 http://backbonejs.org/

Underscore-min.js來自?http://underscorejs.org/

?

我們創建了這個應用的骨架,接下來我們會在這系列教程中逐漸完善它.打開app.js寫入下面的內容.

(function ($) {var contacts = [{ name: "Contact 1", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "family" },{ name: "Contact 2", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "family" },{ name: "Contact 3", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "friend" },{ name: "Contact 4", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "colleague" },{ name: "Contact 5", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "family" },{ name: "Contact 6", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "colleague" },{ name: "Contact 7", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "friend" },{ name: "Contact 8", address: "1, a street, a town, a city, AB12 3CD", tel: "0123456789", email: "anemail@me.com", type: "family" }];} (jQuery));

我們把所有的代碼都放在一個匿名立即執行函數內.? 并且把JQuery以別名$為參數傳送給匿名函數. 并且定義一個數組對象,每條記錄對應一個聯系人.

我們的教程使用這些本地數據,這樣我們可以先不考慮數據和服務器同步的問題. 這些將來再去解決.

Models

在數組后面我們開始定義這個應用的數據模型model了.請把這段代碼加在數組的后面. 但仍舊是在閉包里.

var Contact = Backbone.Model.extend({defaults: {photo: "/img/placeholder.png"} });

模型model是對一個應用的數據類型的描述. 例如姓名,年齡,等等.使用Backbone.js創建model的方法就是使用Backbone.Model類的extend()

方法來擴展新的model; 我們可以添加新的屬性來擴展我們自定義model的功能.這里我們添加了defaults屬性來定義新的model的缺省值.

在這個例子里我們為每個model定義了缺省的photo屬性. 任何沒有定義photo屬性的model將會使用這個缺省屬性的值.

每個model初始化后都會調用initialize()方法, 這里我們暫時沒用用到. 沒關系.后面我們還會再來修改model的.

Collections

集合是用來管理一組model的,在這里我們定義一個Dirctory來存儲所有的Contacts.Collection的model就是Contact.我們把下面的

代碼添加到Model定義的后面. 同樣是閉包內.

var Directory = Backbone.Collection.extend({model: Contact });

(太麻煩了,后面不會逐句翻譯了,原文有點羅嗦,我覺得)同樣Collection來自Backbone.Collection.extend();

model屬性可以告訴集合,集合內管理的是什么類型的數據. 雖然現在看起來簡單.不用擔心教程后面會繼續擴展

它的定義.

Views

View就是負責在應用程序中顯示數據的.它能夠把數據處理和數據顯示分離開. 這樣當部分代碼需要修改的時候

不會影響其他的部分.我們這個應用程序需要兩個視圖,第一個直接加在Directory的后面.

var ContactView = Backbone.View.extend({tagName: "article",className: "contact-container",template: $("#contactTemplate").html(), //定義模板位置render: function () {var tmpl = _.template(this.template); //把模板內的html放在<article className="contact-container"></article>里.this.$el.html(tmpl(this.model.toJSON())); //用model的值替換模版內令牌.return this;} });

這個view處理單獨的一個Contact. 和model還有collection一樣. view擴展自Backbone.View的extend()方法.

這個單獨Contact的view定義了用來展示Contact的DOM(article),DOM的類"contact-container"(css定義用到)

以及用JQuery的方法定位模版(#contactsTemplate),它還有一個屬性render執行一個函數.用來渲染View但是這個例子里

我們沒有定義initialize()方法也沒有在initialize()里調用render(),所以不會自動的渲染Contact視圖.

?

標簽的屬性className.

使用Underscore的微模版

將以下代碼加到index.html聯系人Contact的<div>標簽后面

<script id="contactTemplate" type="text/template"><img src="<%= photo %>" alt="<%= name %>" /><h1><%= name %><span><%= type %></span></h1><div><%= address %></div><dl><dt>Tel:</dt><dd><%= tel %></dd><dt>Email:</dt><dd><a href="mailto:<%= email %>"><%= email %></a></dd></dl> </script>

我們用了一個帶id屬性的<script>標簽這樣可以很容易的選中它. 另外在給這個標簽添加一個type="text/template"使它瀏覽器

不會被執它.在模版內我們可以定義自己想要的html并且在需要顯示數據的地方使用嵌套<%=%>來展現數據.

?

一個主視圖

我們當前的視圖僅僅描述一個單獨聯系人Contact,而且我們還沒有調用它自身的渲染方法. 而且我們現在需要一個總的

聯系人集合(Directory)的視圖,把這段代碼加到 app.js的ContactView定義后面.

var DirectoryView = Backbone.View.extend({el: $("#contacts"),                  //最終展示view的DOM元素<div id="contacts"></div>initialize: function () {              //視圖初始化完成后執行的函數this.collection = new Directory(contacts); //用最開始初始化的數組作為數據源初始化視圖的集合.this.render();                  //調用視圖自己渲染方法渲染自己.},render: function () {var that = this;_.each(this.collection.models, function (item) { //循環視圖關聯的集合that.renderContact(item);            //渲染每個Contact}, this);},renderContact: function (item) {             //渲染單獨一個Contact調用的方法var contactView = new ContactView({         //定義每個單獨的Contact小Viewmodel: item});this.$el.append(contactView.render().el); //渲染單獨的Contact并追加到主View里} });

主視圖負責將Directory中的每個Contact都渲染出來.我們僅僅要做的將主視圖初始化就可以做到這個功能.

在DirectoryView定義后加入下面代碼:

var directory = new DirectoryView();

定義好screen.css

.contact-container { width:400px; padding:10px; border:1px solid #aaa; margin:0 10px 10px 0; float:left; font-family:sans-serif; color:#333; background-color:#eee; } .contact-container h1 { margin:0; font-weight:normal; } .contact-container h1 span { float:right; font-size:14px; line-height:24px; font-weight:normal; } .contact-container img { border-width:1px; border-style:solid; border-color:#fff; border-right-color:#aaa; border-bottom-color:#aaa; margin-right:10px; float:left; } .contact-container div { margin-bottom:24px; font-size:14px; } .contact-container a { color:#333;} .contact-container dl { margin:0; float:left; font-size:14px; } .contact-container dt, .contact-container dd { margin:0; float:left; } .contact-container dt { width:50px; clear:left; }

完成保存后,從瀏覽器打開index.html代碼看到:

(實際上我用IE11是不行,顯示的是一縱列沒有樣式的Contact.只有在FireFox和chrome可以正常顯示.大概是部分css不支持的問題.)

總結

這部分教程我們介紹了Backbone.js的核心組件model,collection,還有view. model存儲應用數據,和定義一些特別的行為.collection是用來

管理model的集合. view的作用是渲染和展示model中的數據.

下次的教程我們要學習怎么從集合中過濾部分model數據. 還有學習Backbone.js的另外一個重要組件route

?

補充placeholder.png

項目的源代碼可以從這里下載:

http://cdn.tutsplus.com/net/uploads/legacy/1142_bb1/demo.zip

?

轉載于:https://www.cnblogs.com/dangkei/p/5038083.html

總結

以上是生活随笔為你收集整理的用Backbone.js创建一个联系人管理系统(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产成人精品久久二区二区 | 成a人片亚洲日本久久 | 色91视频 | 1000部啪啪| 久久免费播放视频 | 久久久精品人妻无码专区 | 综合成人| 韩国黄色大片 | 韩日免费视频 | 久久国产精品二区 | 国产黄色在线网站 | 成人av影视在线 | 光棍影院一区二区 | 最好看十大无码av | 国内自拍视频网站 | 婷婷激情综合 | 欧美激情国产一区 | 久久丫丫| 国产区福利 | 污黄视频在线观看 | 国产精品一区二区三区在线看 | 黄色小网站在线观看 | 凸凹人妻人人澡人人添 | 91在线播| 国产视频一区在线播放 | 久久人人爽爽人人爽人人片av | 少妇aa| 色呦呦国产 | 午夜激情在线观看 | xxxxx在线视频| 福利在线观看 | 少妇野外性xx老女人野外性xx | 奶妈的诱惑| 色视频在线观看免费 | 免费观看黄色网址 | 日韩专区在线 | jizz久久 | 日本女人hd | 特级黄色一级片 | 六月丁香色婷婷 | 久久无毛 | 7777精品久久久久久 | 亚洲精品日韩在线 | www.看毛片| 久久成人在线 | 亚洲欧美激情精品一区二区 | 亚洲精品一区二区三区区别 | 性人久久久久 | 国产视频你懂的 | 黄页网站免费在线观看 | 日韩激情网 | 日本中文字幕网 | av福利网站| 久久久久一区二区三区 | 国产av精国产传媒 | 日本十八禁视频无遮挡 | 97超碰人人看 | 国产又爽又黄免费视频 | 国产做受麻豆动漫 | 欧美在线播放一区 | 欧美日韩电影一区 | 国产成人精品在线视频 | 亚洲第一色区 | 狠狠插狠狠干 | 熟妇人妻久久中文字幕 | 国产亚州av | 欧美一区二区三区的 | 中文字幕一区二区久久人妻 | av免费网页| 日韩毛片高清在线播放 | 懂色av懂色av粉嫩av分享吧 | www.超碰在线.com | 国产精品麻豆入口 | 最新在线黄色网址 | 精品国产三级 | 一级做a爰片 | 国产人成无码视频在线观看 | 欧美激情视频一区二区三区不卡 | 亚洲精品久久视频 | 亚洲女人天堂成人av在线 | 喷水少妇| 欧美性生话 | 日韩青青草 | 在线综合网 | 国产乱子伦一区二区 | 国产精品99无码一区二区视频 | 国产成人午夜高潮毛片 | 黑白配av| 欧美精品乱码视频一二专区 | 驯服少爷漫画免费观看下拉式漫画 | 欧美乱论视频 | 久久一区二区三区视频 | 一卡二卡精品 | 亚洲男人网站 | 久草手机在线视频 | 欧美激情国产精品免费 | 男人天堂一区二区 | 亚洲成人一 | 日韩天天|