介绍 来自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();

  输出内容为:(此处假装在页面上^_^)

  price : 2. quantity : 3. Amount : 6 .
  price : 10. quantity : 20. Amount : 200 
 
  此处待承接下文...

BackboneJS and UnderscoreJS的更多相关文章

  1. 使用requireJS,backboneJS,和underscoreJS完成自定义模板封装

    使用requireJS,backboneJS,和underscoreJS完成自定义模板封装 原来的代码 当我们进行一个列表的数据填充的时候,是这样做的: //获取美食列表 function getFo ...

  2. backbonejs mvc框架的增删查改实例

    一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...

  3. 《BackboneJS框架的技巧及模式》(4)完结篇

    <BackboneJS框架的技巧及模式>(4)完结篇 本文紧接第二部分:<BackboneJS框架的技巧及模式(3)> 作者:chszs,转载需注明.博客主页:http://b ...

  4. 不学就吃亏的underscorejs类库学习示例 ——(集合篇)

    underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...

  5. 《BackboneJS框架的技巧及模式》(2)

    <BackboneJS框架的技巧及模式>(2) 本文紧接第一部分:<BackboneJS框架的技巧及模式(1)> 作者:chszs,转载需注明.博客主页:http://blog ...

  6. backbonejs mvc框架

    backbonejs mvc框架的增删查改实例 一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https ...

  7. BackboneJS 源码注释

    Backbone 作者在源码中做了很好的注释,这里只是锦上添花,补充一些个人的理解而已. // Backbone.js 1.2.3 // (c) 2010-2015 Jeremy Ashkenas, ...

  8. 三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS

    <三大JavaScript框架对比——AngularJS.BackboneJS和EmberJS> 本文转载自  作者:chszs,博客主页:http://blog.csdn.net/chs ...

  9. underscorejs 源码走读笔记

    Underscore 简介 Underscore 是一个JavaScript实用库,提供了类似Prototype.js的一些功能,但是没有继承任何JavaScript内置对象.它弥补了部分jQuery ...

随机推荐

  1. ubuntu VSFTPD搭建FTP服务器 提示530错误

    配置完 vsftpd ,发现不能登录,提示 530 错误.解决方法如下: sudo rm /etc/pam.d/vsftpd 注:因为 ubuntu 启用了 PAM,所在用到 vsftp 时需要用到 ...

  2. AutoCAD菜单加载失败 找不到文件mnc 怎么办

    菜单加载失败,找不到文件 SWFILECONV(mnu/mns/mnc)   找到CAD安装目录下的swfileconv.arx文件,用记事本打开,清空内容,然后保存即可.  

  3. javascript返回顶端源代码

    <div style="display:none" id="goTopBtn"><img src="http://www.unity ...

  4. 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例

    服务器无法处理请求. ---> 未将对象引用设置到对象的实例. 简短说下我遇到的问题.webservice部署到服务器上后,访问方法报上面的错误,最终原因为改方法需要操作文件夹,加上了相应的权限 ...

  5. 怎么查询数据库中第30到40条记录呢? 通过ID,查询当前第30-40条记录 注意,ID不是顺序的

    http://blog.csdn.net/lee576/article/details/5812347 http://bbs.csdn.net/topics/190070614 http://www. ...

  6. Potentiometers

    题意: 线段树的单点修改,区间查询 #include <map> #include <set> #include <list> #include <cmath ...

  7. 玲珑学院OJ 1023 - Magic boy Bi Luo with his excited math problem 树状数组暴力

    分析:a^b+2(a&b)=a+b  so->a^(-b)+2(a&(-b))=a-b 然后树状数组分类讨论即可 链接:http://www.ifrog.cc/acm/probl ...

  8. 【Poj 1832】连环锁

    连环锁 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1260   Accepted: 403 Description 许多 ...

  9. 【USACO 2010FEB】 slowdown

    [题目链接] 点击打开链接 [算法] dfs序 + 线段树 树链剖分同样可以解决这个问题 [代码] #include<bits/stdc++.h> using namespace std; ...

  10. bzoj4031 [HEOI2015]小Z的房间——矩阵树定理

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 矩阵树定理的模板题(第一次的矩阵树定理~): 有点细节,放在注释里了. 代码如下: # ...