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.jsif (!_ && (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、引入视图渲染模板

转载于:https://www.cnblogs.com/cnwebdeveloper/p/3324343.html

Backbone.js 1.0.0源码架构分析(一)相关推荐

  1. live555 源码架构分析

    live555源代码分析   , 写的不错 转载备忘 源代码下载(VC6工程):http://download.csdn.net/detail/leixiaohua1020/6374387 liveM ...

  2. Android 4.0 Launcher源码详细分析 傻蛋

    http://wenku.baidu.com/view/80e280e2998fcc22bcd10dcd.html

  3. Pushlet 2.0.3 源码分析

    转载地址:http://blog.csdn.net/yxw246/article/details/2418255 Pushlet 2.0.3 源码分析 ----服务器端 1 总体架构 Pushlet从 ...

  4. 从路由原理出发,深入阅读理解react-router 4.0的源码

      react-router等前端路由的原理大致相同,可以实现无刷新的条件下切换显示不同的页面.路由的本质就是页面的URL发生改变时,页面的显示结果可以根据URL的变化而变化,但是页面不会刷新.通过前 ...

  5. android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?

    点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 :  刘望舒  |  来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...

  6. 菜鸟读jQuery 2.0.3 源码分析系列(1)

    原文链接在这里,作为一个菜鸟,我就一边读一边写 jQuery 2.0.3 源码分析系列 前面看着差不多了,看到下面一条(我是真菜鸟),推荐木有入门或者刚刚JS入门摸不着边的看看,大大们手下留情,想一起 ...

  7. [转组第10天] | Android6.0.0_r1源码编译和POC程序的编译

    2018-05-23 Android6.0.0_r1源码编译 简要说明:android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述. 主机环境 Ub ...

  8. Android 8.0系统源码分析--Camera processCaptureResult结果回传源码分析

    相机,从上到下概览一下,真是太大了,上面的APP->Framework->CameraServer->CameraHAL,HAL进程中Pipeline.接各种算法的Node.再往下的 ...

  9. android4.0.3源码之硬件gps简单移植

    [转]我和菜鸟一起学android4.0.3源码之硬件gps简单移植 2013-7-5阅读94 评论0 关于android定位方式 android 定位一般有四种方法,这四种方式分别是GPS定位.WI ...

最新文章

  1. golang 数据库 连接与连接池
  2. AJAX-jQuery实现Ajax
  3. socket 相关函数
  4. 我的技术回顾2019不止技术的一年
  5. JavaScript中的If和Else语句(香草)
  6. python内置函数 enumerate()的用法
  7. 原画学习步骤,零基础一步步学原画
  8. 【通信系统信道估计】
  9. 空间相册显示服务器错误,空间相册服务器繁忙
  10. python中倒背如流_倒背如流中倒背是什么意思古代有种背书方法是倒背,倒
  11. 春款童装产品做短视频营销应该怎么做?短视频营销策略分析
  12. Python OpenCV 图片滑块验证码自动识别方案分析与自动化识别方案实现 图片相似度对比 OpenCV如何找到图片中的正方形并进行标记?
  13. [MATLAB App Designer] 多窗口 App 中的交互(含数据传递)
  14. android5.1 淘汰,大S被淘汰! 上1:5油短卡LOSI 5T开箱
  15. Java-- Maps
  16. PAT 乙级 1046(划拳)
  17. 一文读懂Docker、K8s
  18. 中职生职业生涯规划书2000字学计算机,计算机专业中职生职业生涯规划书
  19. UnityShader——屏幕空间反射(一)
  20. wdlinux mysql 日志_mysql,_mysql自动关闭,日志看不懂,希望大神解读下,mysql - phpStudy...

热门文章

  1. (Mirage系列之四)Mirage经典案例之集中桌面管理
  2. 学习spring必须java基础知识-动态代理
  3. [翻译]RoboChamps城市挑战赛
  4. 蓝桥杯 ALGO-22算法训练 数的划分
  5. L1-017. 到底有多二-PAT团体程序设计天梯赛GPLT
  6. L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
  7. dbscan和谱聚类_R 无监督聚类算法(1)K-means和层次聚类
  8. 小黑框运行java_初探Java类加载机制
  9. Python中的分组函数(groupby、itertools)
  10. tomcat 如何配置环境变量