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 ...
 
随机推荐
- Erlang 又生虫了
			
好久不玩Erlang了.近期想鼓捣Eresye,下了个最新版OTP 17,结果.发现了问题. 安装这个最新版的Erlang (erl 6.0)后,用erlc编译了Eresye 1.2.5,并放入其li ...
 - 蓝桥杯   地宫寻宝   带缓存的DFS
			
历届试题 地宫取宝 时间限制:1.0s 内存限制:256.0MB 问题描写叙述 X 国王有一个地宫宝库. 是 n x m 个格子的矩阵. 每一个格子放一件宝贝. 每一个宝贝贴着价 ...
 - ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(三)
			
照例文章第一段跑题,先附上个段子(转载的哦~): I hate CS people. They don't know linear algebra but want to teach projecti ...
 - ZOJ问题(2010浙江大学研究生复试上机题目[找规律] hdoj 3788)
			
ZOJ问题 pid=3788">点击打开链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
 - ios Enum Value To NSString
			
#define enumToString(value) @#value eg. typedef NS_ENUM(NSInteger, Sex) { Male = 0, Famale = 1, }; ...
 - SQLyog普通版与SQLyog企业版对比分析
			
这里,为什么要写这篇博客呢? 对于SQLyog普通版而言,只能复制到不同的数据库里,这样显得麻烦,当然,你也可以用语句来操作达到实现目的. 具体做法: MySQL复制旧表的结构及数据到新表 CREAT ...
 - ResolveUrl in external JavaScript file in asp.net project
			
https://stackoverflow.com/questions/11263425/page-resolveurl-is-not-working-in-javascript The proble ...
 - socket listen backlog
			
http://stackoverflow.com/questions/4253454/question-about-listening-and-backlog-for-sockets The list ...
 - 韩顺平Oracle笔记
			
韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring 目录(?)[-] ...
 - java多线程面试题(来自转载)
			
在典型的Java面试中, 面试官会从线程的基本概念问起, 如:为什么你需要使用线程, 如何创建线程,用什么方式创建线程比较好(比如:继承thread类还是调用Runnable接口),然后逐渐问到并发问 ...