Backbone.js学习之一
昨天一个我崇拜的朋友,徐飞送我一本名为《Backbone.js实战》书,让我心中狂喜,于是带着这份浓厚的兴趣,开始研究Backbone.js之路。
打开这本书的第一句话就很有哲理,“授人以鱼,不如授之以渔。”,我花了一段时间仔细的看完了的第一章节,今天通过自己所理解的,
记录下我自学的第一步。其他不多说,进入主题:
首先在学习Backbone.js之前要了解Backbone.js是什么?
在我看来它是一个处理前端MVC很好的js框架,Backbone是一个非常轻量级的javascript库,自身具备以下几个方面:
1. MVC结构化(这个是Backbone的核心结构,大家都对java开发的MVC很熟悉,但对前端js的MVC或许有些人听都没听过,只能说不同领域,不同理解。)
2.继承特性(在js的世界里,没有类的概念,所以这个继承概念就变得模糊,而Backbone既能以面向对象方式编写数据,集合,视图模型,又具有可继承性,概念清晰化。)
3.事件统一管理
4.绑定页模板(这个后续研究)
5.服务端无缝交互(这个概念在以后的文章中专门详解)
以上5种就是Backbone.js的主要特点,要全理解透彻,需要花大量时间和精力。
代码块编写:
在开始写第一段代码之前,需要把框架环境搭建好,首先要引用一个JQuery,和underscore.js,然后在引用Backbone.js,一开始我觉得奇怪,为什么还要引用jQuery,后来在编写代码的时候,发现一些获取dom元素的写法,还是以jQuery方式获取,毕竟jQuery是对dom封装操作很优秀的库,兼容,轻巧。然后还要引用underscore.js,据我学习的了解underscore.js是Backbone的依赖库,只要使用Backbone就必须先导underscore.js,因为underscore.js是一个最基础的函数库,该库按类别又可以划分为(集合,数组,函数,对象,实用工具等),了解这些之后,只要将其引用即可,但引用的时候要注意顺序,先引入jQuery,其次是underscore.js,最后才是Backbone.js。切记!
进入了我第一次编写Backbone代码记录,非常的兴奋。
首先我想实现一个小操作,说明下,在页面显示“点击我”的字样,

当我鼠标点击“点击我”操作的时候,字马上换成“hello,蒯灵敏,您好!”

代码如下:

在这段代码的实现思路不难,先创建一个object类型的变量klm,然后通过_.bindAll函数去把onClick方法绑定到klm对象中,而这个_.bindAll是在
underscore.js中实现的,

这就是封装的_.bindAll源码,会判断元素的长度,如果长度小于等于‘1’的时候会抛出异常“bindAll must be passed function names”,
如果长度大于1的时候会进行一个循环操作调用_.bind()函数,这个函数源码的详细解析在http://www.cnblogs.com/mxw09/archive/2012/07/06/2579329.html 这里就不多说了,用_.bindAll函数给对象绑定onClick事件之后,再添加到jQuery中的bind函数绑定,绑定的事件为'click',绑定的值为klm.onClick,绑定的对象就是
,感觉绑定了很多次,不过功能就这么实现了。
在这个小程序中我还学习到一个知识点,_()方法,因为underscore没有对原生的js进行封装,而是调用_()方法进行封装,一旦使用这个_()方法封装就成了underscore对象。
在这里定义一个object属性,然后放入到_()方法中去,

转换underscore对象的object是怎么获取里面的name和text值呢,underscore.js提供了value()方法,只要写成object.vlaue().name就能把值获取到。
如图:
这段代码是我一个实现过程,在underscore.js还有很多函数去学习,去理解,
今天就分享这些,走完学习Backbone.js的第一步!激情的前进着。。。
Backbone.js学习之一的更多相关文章
- 【转】Backbone.js学习笔记(二)细说MVC
文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...
- Backbone.js学习之二
经历一段自我修炼,终于领悟到Backbone.js的关键知识点,也发现了原来MVC可以在前端这样梦幻的发挥,Backbone.js确实是一个很有魅力的前端MVC框架. 练就一门技术,需要有扎实的功底, ...
- backbone.js学习笔记
之前只接触过jQuery,看来Backbone是除了jQuery的第二大JS框架... backbone到底是个啥? 其实刚开始我也不知道=_=,我是这周二才听说居然还有这么个框架...于是乎我的导师 ...
- Backbone.js学习之初识hello-world
说了好久好久要学习Backbone.js,现在终于下定决心开始学习了.然后呢,就根据我的学习进度在这里做个简单的记录,方便新人,也方便我自己以后回忆. 准备 用bower下载这几个库或框架也是醉了.. ...
- 【转】Backbone.js学习笔记(一)
文章转自: http://segmentfault.com/a/1190000002386651 基本概念 前言 昨天开始学Backbone.js,写篇笔记记录一下吧,一直对MVC模式挺好奇的,也对j ...
- Backbone.js学习之Backbone.View(视图)
Backbone.js为复杂WEB应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和自定义事件:集合附有可枚举函数的丰富API: 视 ...
- Backbone.js学习之View
千呼万唤始出来,终于到最后一个要点View了.照旧,先来一睹官方文档: Backbone views are almost more convention than they are code - t ...
- Backbone.js学习之旅(一)
前言 刚到粑粑公司,就学习各种框架,进行各种开发,为了纪念挥泪的青春,只好写下…… 希望能合您胃口^_^!!! The First(文件准备) backobone 强制依赖于 underscore.j ...
- Backbone.js学习之Collection
首先,当然是一如既往地看官方文档的解释. Collections are ordered sets of models. 翻译: Collections是models的一个集合. 关于book和boo ...
随机推荐
- Oracle dbms_lock.sleep()存储过程使用技巧-场景-分析-实例
<Oracle dbms_lock.sleep()存储过程使用技巧>-场景-分析-实例 摘要:今天是2014年3月10日,北京,雾霾,下午组织相关部门开会.会议的结尾一名开发工程师找到了我 ...
- codevs 2530大质数
链接:http://codevs.cn/problem/1530/ 解题思路: 这个题最关键的剪枝还是 因子小于平方根,但不是像原来那样用. 逆转思维,与其说判断哪些是质数,不如说判断哪些不是质数,更 ...
- Jquery学习笔记---闭包
1. 简要介绍 闭包可谓是js中的一大特色了,即使你对闭包没概念,你可能已经在不知不觉中使用到了闭包.闭包是什么,闭包就是一个函数可以访问到另一个函数的变量.这就是闭包,解释起来就这么一句话,不明白? ...
- 阿里云 SWAP
https://yq.aliyun.com/articles/52098 https://www.kejianet.cn/aliyun-swap/
- 那些年,我们在Django web开发中踩过的坑(一)——神奇的‘/’与ajax+iframe上传
一.上传图片并在前端展示 为了避免前端整体刷新,我们采用ajax+iframe(兼容所有浏览器)上传,这样用户上传之后就可以立即看到图片: 上传前: 上传后: 前端部分html: <form s ...
- python实现支持并发、断点续传的Ftp程序
一.要求 1.用户md5认证 2.支持多用户同时登陆(并发) 3.进入用户的命令行模式,支持cd切换目录,ls查看目录子文件 4.执行命令(ipconfig) 5.传输文件: a.支持断点续传 b.传 ...
- javascript中求浏览器窗口可视区域兼容性写法
1.浏览器窗口可视区域大小 1.1 对于IE9+.Chrome.Firefox.Opera 以及 Safari:• window.innerHeight - 浏览器窗口的内部高度• window. ...
- AngularJS 开发中常犯的10个错误
简介 AngularJS是目前最为活跃的Javascript框架之一,AngularJS的目标之一是简化开发过程,这使得AngularJS非常善于构建小型app原型,但AngularJS对于全功能的客 ...
- GMap.Net开发之在地图上添加多边形
上一篇介绍了在GMap上添加自定义标签(GMapMarker),这篇介绍在GMap上添加多边形(GMapPolyogn),并且介绍如何在地图上画任意的多边形. 如果已经知道了多边形的各个点的位置,就可 ...
- PL/SQL连接配置
在Oracle安装目录oracle\product\10.2.0\db_2\NETWORK\ADMIN下修改一下三个文件: listener.ora,sqlnet.ora,tnsnames.ora l ...