最轻量级的前端Mvc框架backbone
最轻量级的前端Mvc框架backbone依赖最轻量级的库understore
backbone并非将前端再次切分为mvc,而是分为了七大模块,分别是:Events、Model、Collection、Router、History、Sync、View
一个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的更多相关文章
- 前端MVC框架Backbone 1.1.0源码分析(一)
前言 如何定义库与框架 前端的辅助工具太多太多了,那么我们是如何定义库与框架? jQuery是目前用的最广的库了,但是整体来讲jQuery目的性很也明确针对“DOM操作”,当然自己写一个原生态方法也能 ...
- 前端MVC框架Backbone 1.1.0源码分析系列
Backbone.js 是一个在JavaScript环境下的 模型-视图-控制器 (MVC) 框架.任何接触较大规模项目的开发人员一定会苦恼于各种琐碎的事件回调逻辑.以及金字塔般的代码.而且,在传统的 ...
- 前端mvc框架backbone.js入门[转]
原文地址:http://www.cnblogs.com/zhjh256/p/6083618.html 关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以 ...
- 前端mvc框架backbone.js入门
关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以长久生存,通常都是有其特定优势和擅长点的. 使用backbone.js作为前端框架的应用通常都是htm ...
- 前端MVC框架Backbone 1.1.0源码分析(二) - 模型
模型是什么? Models are the heart of any JavaScript application, containing the interactive data as well a ...
- Web前端MVC框架的意义分析
前言: Web前端开发是Web技术发展中的一个重要组成部分,在传统的前端开发中由于外界因素的影响导致其开发形式呈现出简单化的特点,即以页面为主体来展示界面中的信息.然而随着科学技术的不断进步,Web前 ...
- 前端MVC框架、类库、UI框架选择
CSS预处理器sass(基于Ruby服务端版)less(客户端版:基于js; 服务端版:基于nodejs) 前端UI框架JqueryMiniUI: http://www.miniui.com/(适用于 ...
- Web前端MVC框架
MVC: 模型层(model).视图层(view).控制层(controller) Model:即数据模型,用来包装和应用程序的业务逻辑相关的数据或者对数据进行处理,模型可以直接访问数据. View: ...
- 前端MVC框架对比
首先要特别说明一下,作者认为以下四个功能是十分重要的: UI Bindings(UI绑定):作者想说的不仅仅是模板,而是想谈一种在底层模型出现变化时,视图层能够自动相应地更新的陈述性方法.一旦您用过了 ...
随机推荐
- JMeter设置集合点
集合点:简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点, 还拿那个用户和密码的地方,每到输入用户 ...
- json 入门(1)
1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,Java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...
- 关于DOM
前言 DOM的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组 ...
- for的冒泡排序练习题
这是一个冒泡排序的方法,请汲取其中的思想.有一组数: 1,2,3,4,5,6请将这组数用降序排列.我们可以将数组里面的数两两相比,如果第二个数比第一个数大,那么将第二个数值与第一个数值交换,然后让其循 ...
- JS实现有点炫的图片展示效果-图片解体和组合
经过4个月的努力学习,迎来了进入市场的最后一个学习项目.自己模仿了一个图片展示效果,用在了项目中,感觉挺炫的.在这里分享一下,希望大家喜欢~! bomb-showImg : 在线演示http://ru ...
- get请求
写在前面的话 XMLHttpRequest对象的open方法的第一个参数为request-type,取值可以为get或post.本篇介绍get请求. get请求的目的,主要是为了获取数据.虽然get请 ...
- 将DLL中资源导出到指定文件夹
File.WriteAllBytes( @"C:\Windows\System32\MyDll.dll", Resources.MyDll );
- WPF拖放功能实现zz
写在前面:本文为即兴而作,因此难免有疏漏和词不达意的地方.在这里,非常期望您提供评论,分享您的想法和建议. 这是一篇介绍如何在WPF中实现拖放功能的短文. 首先要读者清楚的一件事情是:拖放主要分为拖放 ...
- Storm可靠性实例解析——ack机制
对于Storm,它有一个很重要的特性:“Guarantee no data loss” ——可靠性 很显然,要做到这个特性,必须要track每个data的去向和结果.Storm是如何做到的呢——ack ...
- CentOS6.4 访问域局网中Windows的共享
mount -t cifs -o username=" //10.10.3.246/f /usr/local/openresty/nginx/html/down 说明: mount -t c ...