Backbone的一点使用心得

Backbone的其实感觉上上手很难,大概在一年前就想实践下,结果总是没有付诸行动,这次需求中狠狠心决定一定要使用一次看看,感受下。

可是第一步真的比较困难,因为直接看API好像没有感觉就在网上找实例看看,但是我只能说有些人在给实例的时候根本就没有考虑过新手的感受。

我曾经在看完一些教程之后的迷惑:

1. 在view中this.model到底代表的是什么?

2. template如何写?

其实这两个问题很简单,可能就是一句话的事情,也许是我对于Backbone了解很少的缘故,我当时确实不明白。

下面上一点代码:

Model:

var TrendModel = Backbone.Model.extend({
urlRoot: ‘/price/trend.json‘
});
var trendM = new TrendModel();

这个Model很简单就是提供一个链接,根据这个链接可以获取价格趋势的数据

View:


var TrendView = Backbone.View.extend({
el: $(‘.js-report-tr‘),
template: _.template($(‘#trendTemplate‘).html()),
events: {
// 单引号很重要,不然识别不了
‘click .js-trend-show‘: ‘show‘
},
initalize: function() {
// 确保this的正确作用域
_.bindAll(this, ‘render‘, ‘show‘);
this.model.bind(‘change‘, this.render);
},
render: function() {
var el = this.template(this.model.attributes);
$(this.el).parent().append(el);
return this;
},
show: function() {
// 执行搜索操作,传递参数
this.model.fetch({
data: $.param({
comId: 111
})
});
}
});

var trendV = new TrendView({
model: trendM
});

看最后的3行,你就明白了model是指的什么了,其实model就是在创建View实例对象的时候传递的一个参数,而这个参数就是我上面定义的Model。

View包括几个部分:

el:我感觉就像一个容器或者说是执行环境上下文,应该怎么描述呢?举个例子吧,在backbone的view中我们经常这样查找元素

this.$el.find(‘.xx‘)

其实对应于jquery就是

$(‘.js-report-tr‘).find(‘.xx‘)

events:事件绑定,这里其实还是和el有点关联,例如在整个文档中有多个.js-trend-show元素,我们绑定事件的时候实际上是给.js-report-tr下的.js-trend-show元素绑定事件,其他的不在.js-report-tr的.js-trend-show都不会被绑定对应的事件。

注意点:

1. 事件方法名要加单引号,不然识别不了。

2. View中事件绑定应该使用的是事件代理。

template:模板,我当时看过几个模板的例子,但是就不知道模板是什么语言规则,后来其实我觉得自己是有点二了,实际模板就是一个js配合html的产物。backbone的模板有点像java混合jsp的感觉,有点混乱的感觉,当然好像<%%>可以自定义成其他的符号。

在使用Backbone中其实也遇到了一点问题

1.  model.fetch操作是否将model的值设置成undefined

最开始的时候使用model.fetch后,在render中获取this.model是undefined,当时非常郁闷,想说get请求之后model被清空,那get干什么啊,后来查了下资料

使用_.bindAll(this,‘render‘),确保this的正确作用域。

好像有点混乱,下面做个总结吧

其实Backbone还有Router,Collections没有使用,所以对于Backbone只能是初步有了个了解,Backbone适用于单页面应用,我的实践其实有点纯粹想实验一下。

在这个实践中并没有体现Backbone的优势,但是依然可以让代码看起来更加模块化。

Backbone的一点使用心得,布布扣,bubuko.com

时间: 2024-08-24 10:21:58

Backbone的一点使用心得的相关文章

一点小心得

项目中会遇到这样的逻辑处理:根据不同类型调用不同的方法,通常会用到if else等语句,感觉不太好: 1,应该面向接口编程 2,尽量避免使用if语句 实例:原来代码,接口Iservice的实现类有 ServiceA ,ServiceB,ServiceC public static void main(String[] args) { String type = "C"; Iservice service = null; if (type.equals("A")) {

js之onload事件的一点使用心得

刚看到这篇文章,我也犯晕,实际的原因其实是函数赋值时多了个(),这标明是一个表达式,所以会直接执行函数,小小一个(),奥妙真不小. js之onload事件的一点使用心得 window.load和window.onload的意思并不只是页面加载完就执行,那要看你怎么用了,下面做了示例为大家介绍下,感兴趣的朋友可以参考下 如果我问你window.load和window.onload分别是什么意思,恐怕你会回答我:“这不是页面加载完就执行吗”. 但是答案是不一定,得看你怎么用.看一下例子吧 例1: 代

学习KMP算法的一点小心得

KMP算法应用于 在一篇有n个字母的文档中 查找某个想要查找的长度为m的单词:暴力枚举:从文档的前m个字母和单词对比,然后是第2到m+1个,然后是第3到m+2个:这样算法复杂度最坏就达到了O(m*n),对于大数据肯定不行.KMP算法的精髓即设法减少不必要的枚举次数,举个例子:比如已经匹配好了单词的前k-1个字母:但第k个字母无法匹配了:那么如果前k-1个字母中存在类似回文的情况(前i个字母组成的子串和后i个字母组成的子串相同),那么指针j就变成i(相当于整体往右移动),这样来达到减少枚举次数的目

python+tesseract验证码识别的一点小心得

由于公司需要,最近开始学习验证码的识别 我选用的是tesseract-ocr进行识别,据说以前是惠普公司开发的排名前三的,现在开源了.到目前为止已经出到3.0.2了 当然了,前期我们还是需要对验证码进行一些操作,让他对机器更友好,这样才能提高识别率. 步骤基本上是这样的 第一步对验证码进行灰度图以及二值化 需要用到pil库可以pip下载 代码如下 def binarization(image): #转成灰度图 imgry = image.convert('L') #二值化,阈值可以根据情况修改

pyqt 学习基础 4 - creater的一点使用心得

qt creater 的使用 前言 个人认为 qt creater是个好东西,但是前提是要写过qt代码,不然拿着这个好东西也不知道干什么. 对了,qt creater.exe它的目录是在Python目录下-我的是这样,D:\Python27\Lib\site-packages\PyQt4 Qt creater 的作用 我现在在使用时,经常想要一些功能,但是不知道哪个组件实现更好,这时候,我就回去各种google,baidu ,qt实例(虽然大部分都是c++的),然后看到我想要的效果,我就用自己用

ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)

前言 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.. 今天这篇也不是讲Core的 前面写了C#开发移动应用系列  就第一篇和最后一篇上了最多推荐 - -  也许大家确实不看好吧.. 算了..废话不多说.开始今天的东西吧.. 本篇文章不讲为何我们要用IOC..只讲Autofac使用中的一些小心得 正文 1.基本注入 首先我们要构造一个容器,代码如下: //第一步: 构造一个Auto

新手学分布式 - Envoy Proxy XDS Server动态配置的一点使用心得

Envoy Proxy 动态API的使用总结 Envoy Proxy和其它L4/L7反向搭理工具最大的区别就是原生支持动态配置. 首先来看一下Envoy的大致架构 从上图可以简单理解:Listener负责接受外部的请求,然后经过Filter/Router处理之后,在转发到具体的Cluster. 其中Listener,Router,Cluster和Host地址都是可以动态配置的,配置这些数据的服务就称之为X Discovery Services,简称XDS. 本文主要描述如何编写XDS Serve

卷积学习的一点小心得

在信号的时域分析中,最为重要的就是信号通过线性时不变系统,即时域卷积计算.先来回顾一下线性时不变系统的定义: \[ \begin{array}{l} If{\rm{ }}x(t) \Rightarrow y(t){\rm{ :}}\a{x_1}(t) + b{x_2}(t) \Rightarrow a{y_1}(t) + b{y_2}(t)\x(t - {t_0}) \Rightarrow y(t - {t_0}) \end{array} \tag{1-1} \] 物理可实现的系统绝大多数均满足

软件测试管理的一点小心得

某甲问道:「测试做太多的话,会不会使得bug解不完?」 某乙回答:「还不简单.只要不做测试,就没有bug.」 上述对话,反应出许多软件工作人员对于测试的想法.对多数软件开发人员而言,测试大概是仅次于维护之外,最令人讨厌的工作.对软件研发主管来说,测试是必要之恶:做得不够后患无穷,做得过多又增加成本,延误商机.因此,如何能够规画与执行一个最经济有效的测试工作,当是软件研发主管们须研究的一个课题. 软件测试的困难,在于它不仅是产品的测试,更是产品设计程序的检验.由于关乎设计的测试,准则不易寻找,经验