Backbone主要涉及3部分:model,collection和view。而这个框架的优势在于:数据与视图分离,通过操作model来自动更新view。

根据我的个人经验,直接写个简单的例子是最最直观的,那么从hello world开始吧!

程序目标:创建人员,将人员添加入队伍,删除人员,清空队列。

步骤1. model,理解成一个数据个体。

var People = Backbone.Model.extend({
//每个人都有他自身的属性
defaults : {
"name" : '阿三'
}
});

步骤2. collection,理解成数据队列。

var Peoples = Backbone.Collection.extend({
//对集合的类型进行设定,这里设定为人的集合
model : People
});

步骤3. view,每个伟大的视图背后,都有默默的collection或者model。

var View = Backbone.View.extend({
//设定这个视图的dom元素,也可以通过设定tagName, className, id 或者 attributes。如果没有特别设定,Backbone会为它套上空的div标签
el : $("body"),
initialize : function() {
//集合的事件绑定
this.collection.bind("add", this.addOne);
this.collection.bind("remove", this.delOne);
},
//使用了jquery的on方法,提供对视图的事件代理
events : {
"click #add" : "add",
"click .del" : "del",
"click #clear" : "clear",
},
add : function() {
var name = prompt("请输入人名");
//创建一个新model
var people = new People({
'name' : name
});
//并添加到人员队列中,会触发collection的add事件
peoples.add(people);
},
del : function(obj) {
//获取要删除的是哪个model
var delWho = obj.currentTarget.id; //会触发collection的remove事件
peoples.remove(delWho);
},
//当collection发生了add事件
addOne : function(model) {
//每个model会随机生成一个唯一的cid,用来识别,区分
$("#list").append("<li>" + model.get('name') + "说:hello world!<button class='del' id='" + model.cid + "'>删除</button></li>");
},
//当collection触发了remove事件
delOne : function(model) {
//使用jquery的remove方法,删除dom和解除绑定的事件
$('#' + model.cid).parent().remove();
},
//清空数据
clear : function() {
this.collection.reset();
this.clearAll();
},
//清空dom
clearAll : function() {
$('#list').empty();
}
});

步骤4. 程序入口

var peoples = new Peoples;
var app = new View({
collection : peoples
});

这个例子还是比较直观的。把每个人当作model,队伍为collection,我们看到的界面是view。view绑定了collection的加减事件。通过对collection的操作,自动更新视图。

完整代码:

<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<title>backbone.js-Hello World</title>
</head>
<body>
<button id="add">添加</button>
<button id="clear">清空</button>
<h3>队列</h3>
<ul id="list"></ul>
</body>
<script src="<%=path %>/demo/backone/jquery-1.8.3.js"></script>
<script src="<%=path %>/demo/backone/underscore-min.js"></script>
<script src="<%=path %>/demo/backone/backbone-min.js"></script>
<script type="text/javascript">
(function() {
//model,理解成一个数据个体
var People = Backbone.Model.extend({
//每个人都有他自身的属性
defaults : {
"name" : null
}
}); //collection,理解成数据队列
var Peoples = Backbone.Collection.extend({
//对集合的类型进行设定,这里设定为人的集合
model : People
}); //view,每个伟大的视图背后,都有默默的collection或者model
var View = Backbone.View.extend({
//设定这个视图的dom元素,也可以通过设定tagName, className, id 或者 attributes。如果没有特别设定,Backbone会为它套上空的div标签
el : $("body"),
initialize : function() {
//集合的事件绑定,用来自动更新视图
this.collection.bind("add", this.addOne);
this.collection.bind("remove", this.delOne);
},
//使用了jquery的on方法,提供对视图的事件代理
events : {
"click #add" : "add",
"click .del" : "del",
"click #clear" : "clear",
},
add : function() {
var name = prompt("请输入人名");
//创建一个新model
var people = new People({
'name' : name
});
//并添加到人员队列中,会触发collection的add事件
peoples.add(people);
},
del : function(obj) {
//获取要删除的是哪个model
var delWho = obj.currentTarget.id; //会触发collection的remove事件
peoples.remove(delWho);
},
//当collection发生了add事件
addOne : function(model) {
//每个model会随机生成一个唯一的cid,用来识别,区分
$("#list").append("<li>" + model.get('name') + "说:hello world!<button class='del' id='" + model.cid + "'>删除</button></li>");
},
//当collection触发了remove事件
delOne : function(model) {
//使用jquery的remove方法,删除dom和解除绑定的事件
$('#' + model.cid).parent().remove();
},
//清空数据
clear : function(){
this.collection.reset();
this.clearAll();
},
//清空dom
clearAll : function(){
$('#list').empty();
}
}); //实例化
var peoples = new Peoples;
var app = new View({
collection : peoples
}); })();
</script>
</html>

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【Ruthless】。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

通过helloworld来认识下backbone的更多相关文章

  1. 搭建 Android 开发环境,初试HelloWorld (win7) (下) (转)

    5. 创建AVD 为使Android应用程序可以在模拟器上运行,必须创建AVD. 在Eclipse菜单中,选择  Windows -> Android Virtual Device Manage ...

  2. Idea下用SBT搭建Spark Helloworld

    没用过IDEA工具,听说跟Eclipse差不多,sbt在Idea其实就等于maven在Eclipse.Spark运行在JVM中,所以要在Idea下运行spark,就先要安装JDK 1.8+ 然后加入S ...

  3. 使用backbone的history管理SPA应用的url

    本文介绍如何使用backbone的history模块实现SPA应用里面的URL管理.SPA应用的核心在于使用无刷新的方式更改url,从而引发页面内容的改变.从实现上来看,url的管理和页面内容的管理是 ...

  4. RequireJS与Backbone简单整合

    前言 昨天我们一起学习了Backbone,最后做了一个备忘录的例子,说是做了不如说是看了下官方提供的例子,所以最终我感觉我们还是没能掌握Backbone,今天还得做个其它例子先. 然后前面也只是草草学 ...

  5. backbone学习总结(二)

    今天来看下backbone的路由控制的功能.其实个人感觉backbone,模块就那么几个,熟悉它的框架结构,以及组成,就差不多. 废话不多说,我们来看看还剩下的功能. 关于路由和历史管理 通过 Bac ...

  6. zynq学习01 新建一个Helloworld工程

    1,好早买了块FPGA板,zynq 7010 .终极目标是完成相机图像采集及处理.一个Window C++程序猿才开始学FPGA,一个小菜鸟,准备转行. 2,关于这块板,卖家的官方资料学起来没劲.推荐 ...

  7. backbone学习总结(一)

    入职第三天,新公司项目用到backbone+underscore+require等框架,前两天把项目的开发环境都配置好啦,项目也能跑起来,现在准备好好学习公司自己的框架以及用到的框架,有点想吐槽,开发 ...

  8. Backbone框架浅析

    Backbone是前端mvc开发模式的框架.它能够让view和model相分离,让代码结构更清晰简答,开发进度加快,维护代码方便.但是,现在出了一种mvvm框架,它是下一代前端mvc开发模式的框架,代 ...

  9. 【再探backbone 01】模型-Model

    前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...

随机推荐

  1. CSS3 Media Query 响应式媒体查询

    在CSS中,有一个极其实用的功能:@media 响应式布局.具体来说,就是可以根据客户端的介质和屏幕大小,提供不同的样式表或者只展示样式表中的一部分.通过响应式布局,可以达到只使用单一文件提供多平台的 ...

  2. kubernetes1.7正式发布

    Kubernetes发布历史回顾 Kubernetes 1.0 - 2015年7月发布 Kubernetes 1.1 - 2015年11月发布 Kubernetes 1.2 - 2016年3月发布 K ...

  3. mac和linux下使用Docker,部署SpringBoot项目到docker

    主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...

  4. RedHat Server Enterprise 6安装G++

    RedHat 6默认是安装有GCC,而没有安装G++编译 要安装G++前最好先查看下GCC的版本号,通常GCC的版本和G++的版本是相同的,知道GCC的版本再去找G++的安装文件就容易些,版本号有在安 ...

  5. Java [Leetcode 383]Ransom Note

    题目描述: Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 al ...

  6. SVN客户端与服务器端搭建操作

    一.客户端的安装 1.点击安装程序 2.修改svn安装位置 3.开始安装 4.客户端安装成功 5.回到左面  右键出现svn检出 tortoiSVN  表示安装成功 Myeclipse svn插件安装 ...

  7. Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    1.简介 本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍吧. Laravel Excel 在 ...

  8. phpstorm2017.3.6的激活、样式设置和汉化

    一:安装phpstorm2017.3.6,并激活.设置样式.(1)先在phstorm官网里www.jetbrains.com下载phpstorm2017.3.6,按照步骤安装即可.下面开始激活!(2) ...

  9. ArcGIS_Lisence安装步骤

    1.双击lisence.exe文件 2.下一步 3.关闭 4.下一步 5.下一步 6.下一步 7.安装 8.完成 9.OK                      

  10. the road of test

    1.firefox打印兼容问题: <HTML> <HEAD> <TITLE>JavaScript利用IE内置打印控件IEWebBrowser进行打印/打印页面设置/ ...