BackBone.js入门教程

废话不说,直入正题。

Backbone.js是什么

Backbone.js提供了一套web开发框架,通过Models进行key-value绑定及自定义事件处理,通过Collections提供一套丰富的API用于枚举功能,通过Views来进行事件处理及现有的Application通过RESTful JSON接口进行交互,它是基于jQueryunderscore的一个前端js框架。

Backbone中的重要概念

  • Model:根据现实数据建立的抽象,比如people

  • Collection:比如一群人

  • View:对Model和Collection中的数据进行展示,把数据渲染到页面上

  • Router:控制页面的路由

通过Backbone,你可以把你的数据当作Model,通过Model你可以创建数据,进行数据验证,销毁或者保存到服务器上。当界面上的操作引起model中属性的变化时,model会触发change的事件。那些用来显示model状态的views会接受到model触发change的消息,进而发出对应的响应,并且重新渲染新的数据到界面。在一个完整的Backbone应用中,你不需要写那些胶水代码来从DOM中通过特殊的id来获取节点,或者手工的更新HTML页面,因为在model发生变化时,views会很简单的进行自我更新。

感受一下

先上个例子感受一下:简易考勤打卡系统。
下面上代码:

<!DOCTYPE html>
<html>

<head>
  <script src="https://code.jquery.com/jquery-1.11.3.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>

<body>
  <button id="check">请点击此处打卡</button>
  <ul id="person-list"></ul>
</body>
<script>
  (function($){
//       新建Model构造函数
      var People=Backbone.Model.extend({
        name:null,//姓名
        ctime:null//打卡时间
      });
//     新建Collection构造函数
      var Peoples=Backbone.Collection.extend({
        initialize:function(models,options){
          this.bind("add",options.view.addOnePerson);//add将Model添加进Collection,在这里调用View中定义的addOnePerson函数
        }
      });
//     新建View构造函数
      AppView=Backbone.View.extend({
        el:$("body"),
        initialize:function(){
          this.peoples=new Peoples(null,{view:this})//实例化一个Collection
        },
        events:{
          "click #check":"checkIn",//绑定#check的click事件,并执行checkIn函数
        },
        checkIn:function(){
          var person_name=prompt("您的姓名是?");
          if(person_name==""){
            person_name="路人甲";
          }
          var ctime=new Date().getHours()+":"+new Date().getMinutes()+":"+new Date().getSeconds();
          var person=new People({name:person_name,ctime:ctime});
          this.peoples.add(person);
        },
        addOnePerson:function(model){
          $("#person-list").append("<li>"+model.get('name')+"您好,您的打卡时间为:"+model.get('ctime')+"</li>");
        }
    });
    var appview=new AppView;//实例化一个View,自动执行initialize中的函数
  })(jQuery)
</script>

</html>

动手实践

本节从Model、Collection、View和Router四个部分分别讲解。

Model

对于Model这一部分,其官网是这么说的:“Model是js应用的核心,包括基础的数据以及围绕着这些数据的逻辑:数据转换、验证、属性计算和访问控制”。这句话基本上高度概括了Model在一个项目中的作用。实际上,不仅仅是js应用,在任何以数据收集和处理的项目中Model都是很重要的一块内容。

在web端,Model还有一个重要的功能就是和服务器端进行数据交互,就像是服务器端的程序需要和数据库交互一样。因此Model应该是携带数据流窜于各个模块之间的东西。

所以说,Ajax操作,应该写在Model层。

(function() {
  var Man = Backbone.Model.extend({
    defaults: {
      name: "张三",
      age: "38"
    },
    initialize: function() {
      //初始化时绑定监听,change事件会先于validate发生
      this.bind("change:name", function() {
        var name = this.get("name");
        alert("你改变了name的属性为:" + name);
      });
      this.bind("invalid", function(model, error) {
        alert(error);
      });
    },
    validate: function(attributes) {
      if (attributes.name === '') {
        return "name不能为空!";
      }
    },
    aboutMe: function() {
      return "我叫" + this.get("name") + ",今年" + this.get("age") + "岁";
    }
  });
  var man = new Man();
  alert(man.aboutMe());
  man.set({
    name: ''
  });
  man.save();//验证
})();

model和服务器端的交互,调用save方法会post对象的所有属性到server端,调用fetch时又会发送get请求到server端,接受数据和发送数据的格式均为json格式。

下一期更新Collection。

转载于:https://www.cnblogs.com/depsi/p/5151809.html

---------------- backbone开发经典 336页清晰完整版pdf-------------- 内容简介 · · · · · · backbone.js提供了一套web开发的框架,为复杂javascript应用程序提供一个mvc结构。 《backbone.js应用程序开发》详细介绍了如何使用backbone.js完成web应用开发。全书从了解mvc、spa和backbone.js的基本知识开始,然后着手构建3个示例应用程序;此外,backbone和grunt-bbb、jquery mobile等开发工具的配合使用,以及jasmine、qunit和sinonjs等测试解决方案。 本书的作者是知名的javascript专家、谷歌chrome团队的工程师addy osmani。本书适合于javascript程序员、web开发人员,尤其是想要学习和使用backbone.js的读者阅读参考。 如果你想使用单页应用程序(spa)模型创建前端站点,本书向你展示了如何使用backbone.js完成这类工作。你将学会使用backbone自有风格的模型-视图-控制器(mvc)架构,来创建结构化的javascript应用程序。 《backbone.js应用程序开发》先从了解mvc、spa和backbone的基本知识开始,然后着手构建示例应用程序——一个简单的todo列表应用程序、restful风格的图书应用程序、以及使用backbone和requirejs的模块化应用程序。本书的作者是谷歌chrome团队的工程师addy osmani,他还演示了框架的高级应用。 《backbone.js应用程序开发》包括以下内容: 了解backbone.js如何给客户端带来mvc方面的好处; 编写易于阅读的、结构化的和易扩展代码 ; 使用backbone.marionette和thorax扩展框架; 解决使用backbone.js时会遇到的常见问题; 使用amd和requirejs将代码进行模块化组织; 使用backbone.paginator插件为collections数据分页; 使用样板代码引导新的backbone.js应用程序; 使用jquery mobile,并解决两者之间的路由问题; 使用jasmine、qunit和sinonjsbackbone应用进行单元测试。 作者简介 · · · · · · Addy Osmani,本书的作者是知名的JavaScript专家、谷歌Chrome团队的工程师,他对JavaScript应用程序架构有着强烈的爱好,还创建了一些比较流行的项目,如TodoMVC,并且对Yeoman、Modernizr和jQuery等其他开源项目也有重要贡献。除此之外,Addy Osmani也是一位高产的博主(http://addyosmani.com/blog),同时也是O'reilly出版的《JavaScript设计模式》一书的作者。 徐涛(网名:汤姆大叔;微博:@TomXuTao),微软最有价值专家(MVP)、项目经理、软件架构师,擅长大型互联网产品的架构与设计,崇尚敏捷开发模式,熟悉设计模式、前端技术、以及各种开源产品,曾获MCP、MCSE、MCDBA、MCTS、MCITP、MCPD、PMP认证。《JavaScript编程精解》、《JavaScript启示录》译者,博客地址:Http://www.cnblogs.com/TomXu。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值