最轻量级的前端Mvc框架backbone依赖最轻量级的库understore

backbone并非将前端再次切分为mvc,而是分为了七大模块,分别是:EventsModelCollectionRouterHistorySyncView

一个Model对应一个View,如果是多个Model时,则进化为一个Collection对应一个View

Sync负责与服务器端进行交互

官方网站

http://backbonejs.org/

github地址

https://github.com/jashkenas/backbone

demo:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.js"></script>
    <script src="https://cdn.bootcss.com/underscore.js/1.8.3/underscore-min.js"></script>
    <script src="https://cdn.bootcss.com/backbone.js/1.3.3/backbone-min.js"></script>
</head>
<body>

<script type="text/javascript">
/**
* 知识点:实例化模块
*/
// var model = new Backbone.Model();
// var Collection = new Backbone.Collection();
// var view = new Backbone.View();    

/**
* 知识点:get/set
* Model赋值
*/
// var model = new Backbone.Model();
// model.set("name","Lee");
// alert(model.get("name"));

/**
* 知识点:Model转化为Collection
* Model实例化、初始化时快速赋值
*/
// var model_1 = new Backbone.Model({'name':'Lee'});
// var model_2 = new Backbone.Model({'name':'Mp'});
// var Collection = new Backbone.Collection();
// Collection.add(model_1);
// Collection.add(model_2);
// alert(JSON.stringify(Collection));

/**
* 知识点:extent
* 继承?Model中定义实例方法和静态方法
*/
// var M = Backbone.Model.extend
// (
//     {
//         //第一个参数是一个对象,用于定义实例方法
//         aaa:function(){
//             alert("aaa");
//         }
//     },

//     {
//         //第二个参数是一个对象,用于定义静态方法
//         bbb:function(){
//             alert("bbb");
//         }
//     }
// );
// var _m = new M();
// _m.aaa();  //调用实例方法
// M.bbb();   //调用静态方法

/**
* 知识点:defaults
* Model初始化变量(可以初始化方法,但暂时不知道如何调用)
*/
// var M = Backbone.Model.extend({
//      defaults:{
//          name:"Lee"
//      }
// })
// var m = new M();
// alert(m.get("name"));

/**
* 知识点:initialize/on/change:name
* 构造函数、事件监听,指定对象事件监听
*/
// var M = Backbone.Model.extend({
//     defaults:{
//         name:"Lee"
//     },
//     //构造函数
//     initialize : function(){
//         //绑定事件:当model的值发生改变时
//         //如果你想指定某一个值发生改变,可以'change'改为:'change:name'
//         this.on('change:name',function(){
//             alert("change");
//         })
//     }
// })
// var m = new M();
// m.set("name","Mp");

/**
* (重难点)
* 知识点:View、ListenTo
* Model和View相结合
* ListenTo 和 on的区别就在于第一个参数this.model,它将作为第三个参数this.show的参数
* 根据场景,这个model实质上是被改变的name
*/
// var M = Backbone.Model.extend({
//         defaults:{
//             name:"Lee"
//         }
// });

// var V = Backbone.View.extend({
//     initialize:function(){
//         this.listenTo(this.model,'change',this.show);
//     },
//     show:function(model){
//         $("body").append('<div>' + model.get("name") + '</div>');
//     }
// });

// var m = new M();
// var v = new V({model:m});
// m.set("name","Mp");

/**
* 知识点:sync、save
* 创建和更新,但暂时不知道怎么和服务器交互
*/
// Backbone.sync = function(method,model){
//     alert(method + ":" + JSON.stringify(model));
//     model.set("id",1);   //这个model == m,当save发生时、会检测model有没有id这个属性,
//                          //没有就是create事件,如果有就是update事件.所以第一次会是create,第二次会是update
//                          //所以如果想一开始就是update,可以直接在外部使用m.set("id",1);
// };
// var M = Backbone.Model.extend({
//     defaults:{
//         name:"Lee"
//     },
//     url:"/user"
// });
// var m = new M();

// m.save();
// m.save({name:'Mp'});

/**
* 知识点: Collection.fetch
* 读取,暂时不知道如何和服务器交互
*/
// Backbone.sync = function(method,model){
//     //如果是fetch的话就是read事件
//     alert(method + ":" + JSON.stringify(model));
// };

// var C = Backbone.Collection.extend({
//     initialize:function(){
//         this.on('reset',function(){
//             alert("123");
//         });
//     },
//     url:'/user'
// });

// var c = new C();
// c.fetch();

/**
* 知识点:Router,routes
* 路由,学习hash配置和函数、参数等
*/
// var R = Backbone.Router.extend({
//     routes:{
//         "help":                         "help",        //index.html#help
//         "search/:query":                "search",   //index.html#search/asd
//         "search/:query/p:page":         "search2"   //index.html#search/asd/p1
//     },
//     help:function(){alert("help")},
//     search:function(query){alert(query)},
//     search2:function(query,page){alert(query + "~~~~~" + page)}
// })

// var r = new R();
// Backbone.history.start();

/**
* 知识点:View 的 el,events
*/
// var V = Backbone.View.extend({
//     el:$("body"),
//     events:{
//         'click #myinput' : 'aaa',
//         'mouseover li':'bbb'
//     },
//     aaa:function(){alert("123")},
//     bbb:function(){alert("456")}
// })
// var v = new V();

</script>
<input type="button" id="myinput" value='按钮'></input>
<ul>
    <li>111</li>
    <li>111</li>
    <li>111</li>
    <li>111</li>
</ul>
</body>
</html>

最轻量级的前端Mvc框架backbone的更多相关文章

  1. 前端MVC框架Backbone 1.1.0源码分析(一)

    前言 如何定义库与框架 前端的辅助工具太多太多了,那么我们是如何定义库与框架? jQuery是目前用的最广的库了,但是整体来讲jQuery目的性很也明确针对“DOM操作”,当然自己写一个原生态方法也能 ...

  2. 前端MVC框架Backbone 1.1.0源码分析系列

    Backbone.js 是一个在JavaScript环境下的 模型-视图-控制器 (MVC) 框架.任何接触较大规模项目的开发人员一定会苦恼于各种琐碎的事件回调逻辑.以及金字塔般的代码.而且,在传统的 ...

  3. 前端mvc框架backbone.js入门[转]

    原文地址:http://www.cnblogs.com/zhjh256/p/6083618.html 关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以 ...

  4. 前端mvc框架backbone.js入门

    关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以长久生存,通常都是有其特定优势和擅长点的. 使用backbone.js作为前端框架的应用通常都是htm ...

  5. 前端MVC框架Backbone 1.1.0源码分析(二) - 模型

    模型是什么? Models are the heart of any JavaScript application, containing the interactive data as well a ...

  6. Web前端MVC框架的意义分析

    前言: Web前端开发是Web技术发展中的一个重要组成部分,在传统的前端开发中由于外界因素的影响导致其开发形式呈现出简单化的特点,即以页面为主体来展示界面中的信息.然而随着科学技术的不断进步,Web前 ...

  7. 前端MVC框架、类库、UI框架选择

    CSS预处理器sass(基于Ruby服务端版)less(客户端版:基于js; 服务端版:基于nodejs) 前端UI框架JqueryMiniUI: http://www.miniui.com/(适用于 ...

  8. Web前端MVC框架

    MVC: 模型层(model).视图层(view).控制层(controller) Model:即数据模型,用来包装和应用程序的业务逻辑相关的数据或者对数据进行处理,模型可以直接访问数据. View: ...

  9. 前端MVC框架对比

    首先要特别说明一下,作者认为以下四个功能是十分重要的: UI Bindings(UI绑定):作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法.一旦您用过了 ...

随机推荐

  1. nefu 197 KMP

    Description 在信息检索系统中一个很重要的环节就是关键字符串的查找,从而很多对自己有用的信息.给你一个很长的一段文字, 和一个关键信息字符串,现在要你判断这段文字里面是否有关键字符串. In ...

  2. jvm 监控

    jvm监控可视化的有 jconsole .jmc .jvisualvm 其中jvisualvm开启一些监控会导致他自己关闭. 并且jdk下有很多工具可以进行jvm监控, jmap -histo:liv ...

  3. 我的c++学习(8)运算符重载和友元

    运算符的重载,实际是一种特殊的函数重载,必须定义一个函数,并告诉C++编译器,当遇到该运算符时就调用此函数来行使运算符功能.这个函数叫做运算符重载函数(常为类的成员函数). 方法与解释 ◆ 1.定义运 ...

  4. shell中命令之间数据的传递

    1.管道 "|" ls | cat -n > out.txt 2. 子shell 2.1 子shell 说明 在shell脚本中可以用()操作符可以定义一个子shell #/ ...

  5. MFC CPen CBrush CFont

    在OnDraw函数内定义后使用 使用时,要pDC->SelectObject(),如pDC->SelectObject(font); CPen://draw line Pen.Create ...

  6. How to: 执行Action当收到数据时

      本文旨在演示ActionBlock的使用. 大致流程: 输入路径--读取字节--计算--传输到打印   // Demonstrates how to provide delegates to ex ...

  7. R AnalyticFlow---R的流程图

    0.简介 R AnalyticFlow是一款利用R环境作为统计计算的数据分析软件,创作者是日本人,版权属于日本Ef-prime公司.R AnalyticFlow除了拥有直观的用户界面和流程图显示,它还 ...

  8. Facebook React.js库 入门实例教程

    作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩 ...

  9. ACM 荷兰国旗问题

    荷兰国旗问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 荷兰国旗有三横条块构成,自上到下的三条块颜色依次为红.白.蓝.现有若干由红.白.蓝三种颜色的条块序列,要 ...

  10. NOIp 2014 #5 解方程 Label:数论?

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...