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. 【python】命令行解析工具argparse用法

    python的命令行参数 之前有用到optget, optparse, 现在这些都被弃用了. import argparse parser = argparse.ArgumentParser() ar ...

  2. 使用Python 2.7实现的垃圾短信识别器

    最近参加比赛,写了一个垃圾短信识别器,在这里做一下记录. 官方提供的数据是csv文件,其中训练集有80万条数据,测试集有20万条数据,训练集的格式为:行号 标记(0为普通短信,1为垃圾短信) 短信内容 ...

  3. poj1655(dfs,树形dp,树的重心)

    这是找树的重心的经典题目. 树的重心有下面几条常见性质: 定义1:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心.定义2:以这个点为根,那么所有的子树(不算整个树自身)的大 ...

  4. 让cocos h5里的文字可以在手机上被长按复制

    更改CCBoot.js代码: // Adjust mobile css settings if (cc.sys.isMobile) { var fontStyle = document.createE ...

  5. Python之struct

    struct是Python中的内建模块,用来在C语言中的结构体与Python中的字符串之间进行转换,数据一般来自文件或网络 1. 功能 (1) 按照指定格式将Python数据转换为字符串(该字符串为字 ...

  6. html页面中如何设置当光标移到一个固定区域时其形状变成手型,移出时恢复

    在除了IE6的情况下,可以通过CSS的:hover伪类来实现: 假如你想设定的固定区域为:<div id="test"></div>,那么只需要在CSS样式 ...

  7. JAVA设计模式:静态代理

    一.概念代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关 ...

  8. JAVA中常见异常类

    1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对 ...

  9. EasyWeChat微信开放平台第三方平台接入

    EasyWeChat微信开放平台第三方平台接入 https://www.cnblogs.com/bainiu/p/8022729.html

  10. win7系统清除USBSTOR记录

    方法一 1.Win+R,出现运行窗口,如图所示: 2.在输入框中输入“regedit”,如图所示: 3.进入后,点击编辑-查找,查找输入框中输入“USBSTOR”(为了加快查找速度,可以只选择“项”) ...