Backbone.js 1.0.0源码架构分析(一)
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源码架构分析(一)相关推荐
- live555 源码架构分析
live555源代码分析 , 写的不错 转载备忘 源代码下载(VC6工程):http://download.csdn.net/detail/leixiaohua1020/6374387 liveM ...
- Android 4.0 Launcher源码详细分析 傻蛋
http://wenku.baidu.com/view/80e280e2998fcc22bcd10dcd.html
- Pushlet 2.0.3 源码分析
转载地址:http://blog.csdn.net/yxw246/article/details/2418255 Pushlet 2.0.3 源码分析 ----服务器端 1 总体架构 Pushlet从 ...
- 从路由原理出发,深入阅读理解react-router 4.0的源码
react-router等前端路由的原理大致相同,可以实现无刷新的条件下切换显示不同的页面.路由的本质就是页面的URL发生改变时,页面的显示结果可以根据URL的变化而变化,但是页面不会刷新.通过前 ...
- android 系统源码调试 局部变量值_如何方便快速的整编Android 9.0系统源码?
点击上方"刘望舒",选择"星标" 多点在看,就是真爱! 作者 : 刘望舒 | 来源 :刘望舒的博客地址:http://liuwangshu.cn/fram ...
- 菜鸟读jQuery 2.0.3 源码分析系列(1)
原文链接在这里,作为一个菜鸟,我就一边读一边写 jQuery 2.0.3 源码分析系列 前面看着差不多了,看到下面一条(我是真菜鸟),推荐木有入门或者刚刚JS入门摸不着边的看看,大大们手下留情,想一起 ...
- [转组第10天] | Android6.0.0_r1源码编译和POC程序的编译
2018-05-23 Android6.0.0_r1源码编译 简要说明:android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述. 主机环境 Ub ...
- Android 8.0系统源码分析--Camera processCaptureResult结果回传源码分析
相机,从上到下概览一下,真是太大了,上面的APP->Framework->CameraServer->CameraHAL,HAL进程中Pipeline.接各种算法的Node.再往下的 ...
- android4.0.3源码之硬件gps简单移植
[转]我和菜鸟一起学android4.0.3源码之硬件gps简单移植 2013-7-5阅读94 评论0 关于android定位方式 android 定位一般有四种方法,这四种方式分别是GPS定位.WI ...
最新文章
- golang 数据库 连接与连接池
- AJAX-jQuery实现Ajax
- socket 相关函数
- 我的技术回顾2019不止技术的一年
- JavaScript中的If和Else语句(香草)
- python内置函数 enumerate()的用法
- 原画学习步骤,零基础一步步学原画
- 【通信系统信道估计】
- 空间相册显示服务器错误,空间相册服务器繁忙
- python中倒背如流_倒背如流中倒背是什么意思古代有种背书方法是倒背,倒
- 春款童装产品做短视频营销应该怎么做?短视频营销策略分析
- Python OpenCV 图片滑块验证码自动识别方案分析与自动化识别方案实现 图片相似度对比 OpenCV如何找到图片中的正方形并进行标记?
- [MATLAB App Designer] 多窗口 App 中的交互(含数据传递)
- android5.1 淘汰,大S被淘汰! 上1:5油短卡LOSI 5T开箱
- Java-- Maps
- PAT 乙级 1046(划拳)
- 一文读懂Docker、K8s
- 中职生职业生涯规划书2000字学计算机,计算机专业中职生职业生涯规划书
- UnityShader——屏幕空间反射(一)
- wdlinux mysql 日志_mysql,_mysql自动关闭,日志看不懂,希望大神解读下,mysql - phpStudy...
热门文章
- (Mirage系列之四)Mirage经典案例之集中桌面管理
- 学习spring必须java基础知识-动态代理
- [翻译]RoboChamps城市挑战赛
- 蓝桥杯 ALGO-22算法训练 数的划分
- L1-017. 到底有多二-PAT团体程序设计天梯赛GPLT
- L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
- dbscan和谱聚类_R 无监督聚类算法(1)K-means和层次聚类
- 小黑框运行java_初探Java类加载机制
- Python中的分组函数(groupby、itertools)
- tomcat 如何配置环境变量