backbone入门示例
最近因为有个项目需要用backbone+mui 所以最近入坑backbone。
Backbonejs有几个重要的概念,先介绍一下:Model,Collection,View,Router。其中Model是根据现实数据建立的抽象,比如人(People);Collection是Model的一个集合,比如一群人;View是对Model和Collection中数据的展示,把数据渲染(Render)到页面上;Router是对路由的处理,就像传统网站通过url现实不同的页面,在单页面应用(SPA)中通过Router来控制前面说的View的展示。
通过Backbone,你可以把你的数据当作Model,通过Model你可以创建数据,进行数据验证,销毁或者保存到服务器上。当界面上的操作引起model中属性的变化时,model会触发change的事件。那些用来显示model状态的views会接受到model触发change的消息,进而发出对应的响应,并且重新渲染新的数据到界面。在一个完整的Backbone应用中,你不需要写那些胶水代码来从DOM中通过特殊的id来获取节点,或者手工的更新HTML页面,因为在model发生变化时,views会很简单的进行自我更新。
下面是我今天上午写的一个小demo
<button id="check">窃*格瓦拉</button>
<ul id="world-list">
</ul>
<script>
(function($) {
World = Backbone.Model.extend({
name: null
//创建一个world对象,拥有name属性
});
Worlds = Backbone.Collection.extend({
//World对象的集合
initialize: function(models, options) {
this.bind("add", options.view.addOneWorld);
}
});
Worlds = Backbone.Collection.extend({
//Word对象集合
initialize: function(models, options) {
this.bind("add", options.view.addOneWorld)
}
});
AppView = Backbone.View.extend({
el: $("body"),
initialize: function() {
//构造函数,实例化一个World集合类
//并且以字典方式传入AppView的对象
this.worlds = new Worlds(null, {
view: this
})
},
events: {
//事件绑定,绑定Dom中id为check的元素
"click #check": "checkIn",
},
checkIn: function() {
var world_name = prompt("窃?");
if(world_name == "") world_name = '未知';
var world = new World({
name: world_name
});
this.worlds.add(world);
},
addOneWorld: function(model) {
$("#world-list").append("<li>这是 <b>" + model.get('name') + "</b>的:hello world!</li>");
}
});
//实例化appview
var appview = new AppView;
})(jQuery);
</script>
先装逼到这 我去学习Backbonejs Model实践

定义了一个最基础的Model,实现initialize这个初始化方法。这个函数会在Model被实例化时调用。
//直接定义设置默认值
var User = Backbone.Model.extend({
initialize: function() {
alert("Hi ");
},
defaults: {
name: "窃 格瓦拉",
age: "18",
}
});
var user = new User;
alert(user.get("name"))
//赋值定义
var Users = Backbone.Model.extend({
initialize:function(){
alert("窃 尕娃");
}
});
var users=new Users;
users.set({name:"且尕娃啦 "});
alert(users.get("name"));
从这个对象的取值方式可以知道,属性在一个Model是以字典(或者类似字典)的方式存在的,第一种设定默认值的方式,只不过是实现了Backbone的defaults这个方法,或者是给defaults进行了赋值。
var Man = Backbone.Model.extend({
initialize:function(){
alert("latin girl");
},
defaults:{
name:"窃 格瓦拉",
age:"11",
},
aboutMe:function(){
return "我叫" +this.get("name")+"我今年"+this.get("age")
}
});
var man=new Man;
alert(man.aboutMe());
和服务器进行交互

关于服务器的异步操作都是通过Backbone.sync这个方法来完成的,调用这个方法的时候会自动的传递一个参数过去,根据参数向服务器端发送对应的请求。比如你save,backbone会判断你的这个对象是不是新的,如果是新创建的则参数为create,如果是已存在的对象只是进行了改变,那么参数就为update,如果你调用fetch方法,那参数就是read,如果是destory,那么参数就是delete。也就是所谓的CRUD ("create", "read", "update", or "delete"),而这四种参数对应的请求类型为POST,GET,PUT,DELETE。你可以在服务器根据这个request类型,来做出相应的CRUD操作。
backbone入门示例的更多相关文章
- [WCF编程]1.WCF入门示例
一.WCF是什么? Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,整合了原有的windows通讯的 .net Remotin ...
- Maven入门示例(3):自动部署至外部Tomcat
Maven入门示例(3):自动部署至外部Tomcat 博客分类: maven 2012原创 Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...
- 1.【转】spring MVC入门示例(hello world demo)
1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- Spring MVC 入门示例讲解
在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序.Spring MVC 是Spring框架最重要的的模块之一.它以强大的Spring IoC容器为基础,并充分利用容器的特性来简 ...
- Couchbase之个人描述及入门示例
本文不打算抄袭官方或者引用他人对Couchbase的各种描述,仅仅是自己对它的一点理解(错误之处,敬请指出),并附上一个入门示例. ASP.NET Web项目(其他web开发平台也一样)应用规模小的时 ...
- Velocity魔法堂系列一:入门示例
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
- OUYA游戏开发核心技术剖析OUYA游戏入门示例——StarterKit
第1章 OUYA游戏入门示例——StarterKit StarterKit是一个多场景的游戏示例,也是OUYA官方推荐给入门开发者分析的第一个完整游戏示例.本章会对StarterKit做详细介绍,包 ...
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
随机推荐
- String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";作用!!!!!
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+re ...
- 高德地图纯js和html
<!doctype html> <html> <head> <meta content="" charset="utf-8&qu ...
- JS脚本语言是什么意思?
javascript,Javascript是一种浏览器端的脚本语言,用来在网页客户端处理与用户的交互,以及实现页面特效.比如提交表单前先验证数据合法性,减少服务器错误和压力.根据客户操作,给出一些提升 ...
- 弹出层提示,X秒后关闭
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- SQL Server 2012 开发新功能 序列对象(Sequence)(转)
转载链接:http://www.cnblogs.com/zhangyoushugz/archive/2012/11/09/2762720.html 众所周知,在之前的sqlserver版本中,一般采用 ...
- jsf初学数据表(DataTable)的绑定
来看看简单的datatable例子: faces: <h:form> <h:dataTable value="#{tableData.names}" var=&q ...
- Ueditor之前后端源码的学习和简单的研究
这是我的项目目录 这里写图片描述 1.从访问路径http://localhost:8081/Test/_examples/simpleDemo.html,我们主要是要看看,富文本框被加载出来之前,会调 ...
- 【Android】一道Android OpenGL笔试题
一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...
- 在子线程更新主线程的UI组件
1.实例化一个 private Handler handlerBublishTopic = new Handler(Looper.getMainLooper()); 2. handlerBublish ...
- 了解 Spring Data JPA
前言 自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般出现,为开发者提供了丰富的选择.它一改之前 EJB 2.x 中实体 B ...