Backbone.js 是javascript 语言中 首个实现MVC设计模式的类库,API接口方法重度依赖于underscore.js,DOM选择器则依赖于jQuery.js或者zepto.js。

Backbone.js 1.0.0 现在既可以支持浏览器端js代码,也可以支持服务端nodejs环境代码。为了实现这个兼容性,Backbone.js 采用了在函数表达式中传进‘this’关键词来映射宿主环境的全局变量(在browser为 ‘window’对象,在nodejs环境为'exports'):

(function(){

  // 初始设定
// ------------- // 保存全局对象在本地的引用
var root = this; // 如果我们在引入backbone.js之前,全局对象已经存在Backbone属性,则先把它引入到本地变量,以便Backbone.noConfllict()的实现解决命名空间冲突
var previousBackbone = root.Backbone; //创建数组方法在本地的引用,以便于后面利用
var array = [];
var push = array.push;
var slice = array.slice;
var splice = array.splice; // 顶级命名空间的声明,后面模块与方法都将追加到此命名空间之下
if (typeof exports !== 'undefined') {
//nodejs环境中声明
Backbone = exports;
} else {
//browser中声明,并且添加到全局对象中
Backbone = root.Backbone = {};
} // 版本声明
Backbone.VERSION = '1.0.0'; // browser端,保存backbone.js所依赖的 underscore.js 声明的 全局变量
var _ = root._;
// nodejs中,通过require方式引入underscore.js
if (!_ && (typeof require !== 'undefined')) _ = require('underscore'); // 保存Jquery或Zepto等DOM选择器、操作类库所声明的全局变量在本地的引用
Backbone.$ = root.jQuery || root.Zepto || root.ender || root.$; // 进入非冲突模式,即Backbone的变量已经存在,我们就退而避之,将backbone.js换做其他变量名
Backbone.noConflict = function() {
root.Backbone = previousBackbone;
return this;
};
// backbone各APT方法的实现
}).call(this);

  一个js框架或者类库在编写的时候,首先要为自己‘正名’,如此,才能够扬名立万。

既然名已正,其内功招式就可以正常地表现了。

Backbone 既然有 MVC 之名,那我们就来先看看MVC的典型架构吧:

而backbone.js 可以这样实现

1、自定义model与collection

2、定义渲染model的视图view

3、定义渲染collection的视图view

4、引入视图渲染模板

最新文章

  1. Hibernate框架之get和load方法的区别
  2. [moka同学收藏]Yii2.0 rules验证规则
  3. 服务器time_wait状态原因
  4. linux ps命令详解
  5. C#多线程交替赋值取值
  6. 初学redux笔记,及一个最简单的redux实例
  7. js中的逻辑或和逻辑与
  8. qt绘制设备
  9. poj1260
  10. 【MyBatis源码分析】insert方法、update方法、delete方法处理流程(下篇)
  11. OpenStack搭建遇到的问题2(组件配置错误了,别重装全部,就把模块卸载就行了)
  12. Linux设备驱动编程---miscdevice杂类设备的使用方法
  13. IDEA 使用Mybatis效率飞起来的必备工具:MybatisCodeHelperPro 最新破解版,亲测可用!
  14. js中的所有鼠标事件 键盘事件
  15. leetcode — minimum-window-substring
  16. js 查找当前元素/this
  17. sql查询语句for xml path语法
  18. (String)强制转换、toString()和String.valueOf()的区别
  19. OpenCV不同类型Mat的at方法访问元素时该如何确定模板函数的typename(转)
  20. [django]模板template原理

热门文章

  1. [转]Java transient关键字
  2. #iOS问题记录# UITextview富文本链接,禁止长按事件
  3. rust 参考的资料 转
  4. 给XC2440开发板烧写程序的N种方式
  5. Email the output of a concurrent program as Attachment
  6. Struct2_定义拦截器并使用注解方式作用在Action的方法中
  7. 深入分析JavaWeb Item40 -- 文件上传和下载
  8. iOS:进度条控件的详细使用
  9. iOS:UIView的CALayer基本演练
  10. arithmetic-slices