BackboneJS and UnderscoreJS
介绍 来自API(backbone能做什么?)
当我们开发含有大量Javascript的web应用程序时,首先你需要做的事情之一便是停止向DOM对象附加数据。
通过复杂多变的jQuery选择符和回调函数很容易创建Javascript应用程序,包括在HTML UI,Javascript逻辑和数据之间保持同步,都不复杂。
但对富客户端应用来说,良好的架构通常是有很多益处的。
通过Backbone,你可以将数据呈现为 Models, 你可以对模型进行创建,验证和销毁,以及将它保存到服务器。
任何时候只要UI事件引起模型内的属性变化,模型会触发"change"事件;
所有显示模型数据的 Views 会接收到该事件的通知,继而视图重新渲染。 你无需查找DOM来搜索指定id的元素去手动更新HTML。
— 当模型改变了,视图便会自动变化。
某种意义上说,在用javaScript来创建web项目时,Backbone试图定义一组最小而高效的集合,
包括了数据结构(models(模型) 和 collections(集合))和用户接口(views(视图) 和 URLS)。
在web开发环境里,到处都是框架(帮你写好了一切),不过这些库需要你的网站在构建的时候符合该框架的样子,风格,默认的行为。
但是,Backbone还是作为一个工具,让你可以随心所欲的设计你的网站。
Why Backbone ? 说实话我也不知道为什么想去研究它。选择有很多 Angular,React,Vue,Ember,Knockout,Spine,Meteor等等。。。
况且Backbone已经在web混了很久了。如果真的需要一个理由:可能是因为它短小精悍的身材被吸引吧!(手动滑稽)
By the way 我现在手头上有一本书 : 『Backbone.js Cookbook』-Vadim Mirgorod(乌克兰)
磨叽半天 让我们开始吧!哈哈
首先引用 ,这里就用传统方法来认识吧:
...
<div id="hello"></div>
<div id="renderHere"></div>
<script src="js/main.js"></script>
...
此处太懒了 没写在文档加载完成函数里 直接放在文档底部啦...
main.js =>
/**
* 模块声明方式
*/
var InvoiceModel = Backbone.Model.extend({
default: {
price: 0,
quantity: 0
},
calculateAmount: function() {
return this.get('price') * this.get('quantity');
}
})
赋值 =>
var invoiceItemModel = new InvoiceModel({
price: 2,
quantity: 3
})
创建视图 =>
/**
* 视图View
*/
var PreviewInvoiceItemModel = Backbone.View.extend({
temlate: _.template('\
price : <%= price %>.\
quantity : <%= quantity %>.\
Amount : <%= amount %> .\
'),
render: function() {
var html = this.temlate({
price: this.model.get('price'),
quantity: this.model.get('quantity'),
amount: this.model.calculateAmount()
})
$(this.el).html(html);
}
})
这里用到了underscore里面的模板方法 更多详情移步API 中文版 英文版。
视图引用模块 =>
var previewInvoiceItemModel = new PreviewInvoiceItemModel({
model: invoiceItemModel,
el: '#renderHere' })
渲染 =>
previewInvoiceItemModel.render();
或者
var invoiceItemModel2 = new InvoiceModel();
invoiceItemModel2.set({ price: 10, quantity: 20 });
var previewInvoiceItemModel2 = new PreviewInvoiceItemModel({
model: invoiceItemModel2,
el: '#renderHere'
})
previewInvoiceItemModel2.render();
输出内容为:(此处假装在页面上^_^)
BackboneJS and UnderscoreJS的更多相关文章
- 使用requireJS,backboneJS,和underscoreJS完成自定义模板封装
使用requireJS,backboneJS,和underscoreJS完成自定义模板封装 原来的代码 当我们进行一个列表的数据填充的时候,是这样做的: //获取美食列表 function getFo ...
- backbonejs mvc框架的增删查改实例
一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...
- 《BackboneJS框架的技巧及模式》(4)完结篇
<BackboneJS框架的技巧及模式>(4)完结篇 本文紧接第二部分:<BackboneJS框架的技巧及模式(3)> 作者:chszs,转载需注明.博客主页:http://b ...
- 不学就吃亏的underscorejs类库学习示例 ——(集合篇)
underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...
- 《BackboneJS框架的技巧及模式》(2)
<BackboneJS框架的技巧及模式>(2) 本文紧接第一部分:<BackboneJS框架的技巧及模式(1)> 作者:chszs,转载需注明.博客主页:http://blog ...
- backbonejs mvc框架
backbonejs mvc框架的增删查改实例 一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https ...
- BackboneJS 源码注释
Backbone 作者在源码中做了很好的注释,这里只是锦上添花,补充一些个人的理解而已. // Backbone.js 1.2.3 // (c) 2010-2015 Jeremy Ashkenas, ...
- 三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS
<三大JavaScript框架对比——AngularJS.BackboneJS和EmberJS> 本文转载自 作者:chszs,博客主页:http://blog.csdn.net/chs ...
- underscorejs 源码走读笔记
Underscore 简介 Underscore 是一个JavaScript实用库,提供了类似Prototype.js的一些功能,但是没有继承任何JavaScript内置对象.它弥补了部分jQuery ...
随机推荐
- Ubuntu下Zabbix安装及使用问题
1.configure: error: MySQL library not found MySQL library not found root@kallen:~# apt-get install l ...
- Android 布局自适应屏幕
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenFzNjI3NjExMzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- Spring 之AOP 面向切面编程
AOP相关术语: Joinpoint (连接点):所谓连接点是指那些被拦截到的点,在spring中,这些点指的是方法,因为spring 只支持方法类型的连接点. Pointcut(切入点):所谓切入点 ...
- java jmenu的替代方案
本来想实现一个类似jmenu的窗口,但是发现找了半天也没从L&F中找到实现menu的消失的头绪,最后还是使用了替代方案 使用JDialog来模拟一个menu的窗口,设置 setModel(fa ...
- 【Poj 1832】连环锁
连环锁 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1260 Accepted: 403 Description 许多 ...
- hdu 2209 翻纸牌游戏【贪心】
本来是冲着搜索去的--其实可以贪心 因为能改变第一位的只有第一位和第二位,然后改完之后后面的同理,也就是说只要贪心的推一遍就可以 但是注意要在翻第一个和不翻第一个之间取个min #include< ...
- 10.23NOIP模拟题
叉叉题目描述现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母 a 和第二次出现的 a 连一条线,第三次出现的和四次出现的字母 a 连一条线,第五次出现的和六次出现的字母 a ...
- c#自定义ORM框架---(泛型&反射&实体类扩展属性<附带通用增、删、查、改>)
该教材主要是运用到泛型.反射和实体类扩展属性 步骤一.建立扩展属性类 实体类扩展属性要继承Attribute基类完成 [AttributeUsage(AttributeTargets.Property ...
- Java调用ssl异常(javax.net.ssl.SSLHandshakeException: No appropriate protocol)
今天做升级用了jdk1.8发现java调用SSL的时候,突然一下抛出一个异常 经过一阵瞎搞,最后才发现是因为jdk1.8版本导致SSL调用权限上有问题. 解决办法:找到jdk 1.8安装目录,找到C: ...
- java自学-方法
上节介绍了流程控制语句,一个复杂的业务逻辑会由很多java代码组成,包含许多功能.比如说购物业务,就包含选商品.下单.支付等功能,如果这些功能的代码写到一起,就会显得很臃肿,可读性非常不好.java提 ...