backbone.js是什么

标签: 计算机技术 backbone.js javascript | 发表时间:2012-03-16 18:01 | 作者:Marshal
出处:http://marshal.easymorse.com

backbone.js,是开发web app的框架。凭借它,我们可以使用javascript编写复杂交互的web app,因为backbone提供了强大的对模型、视图和交互的抽象。 以前,我们开发web app,比较依赖比如jQuery:

  • 将所有交互看作对dom节点的操作,虽然也可通过事件(event)解藕复杂的交互,但是无法脱离dom模型,包括事件的传递,都是沿着dom树进行的;
  • 即使是有起到模型作用的对象,一般也通过jQuery附着在dom树上

backbone.js为我们提供了一个使用javascript,在浏览器上,编写符合MVC模式web app的途径。 下面,通过编写最简单的应用,方便初学者上手。因为很简单,就不截图了,页面不显示任何内容,只通过console打印一行日志。

backbone和最简单的模型

backbone只硬性依赖underscore.js,后者是底层库,另外,为了和页面结合,还是需要用到jQuery的,比如需要页面加载后做处理,因此在html页面中需要:

<script type=”text/javascript” src=’Scripts/underscore-min.js’></script> <script type=”text/javascript” src=’Scripts/backbone-min.js’></script> <script type=”text/javascript” src=’Scripts/jquery-1.7.1.min.js’></script>

body部分我只写了一行代码:

<body> <script type=”text/javascript” src=’Scripts/app.js’></script> </body>

这时候,还未用到backbone.js,下面,app.js:

$(document).ready(function () { var Item = Backbone.Model.extend({ hello:function(){ console.log(‘hello world’); } }); var item=new Item; item.hello(); });

可以把第一部分,看作java中的创建了类Item,声明了hello方法。这里的Model,是backbone的最基本组成部分,模型部分。extend,实际调用的是underscore的方法,可在js对象上扩展属性和方法。 第二部分,看起来类似java的创建实例,并执行实例方法。 有了模型,下面就需要考虑,怎么把模型显示到网页上。

backbone模型怎样显示在网页上

模型里当然可以增加属性,类似javabean的属性,因为是解释型语言,因此可以不需要声明就直接设置:

$(document).ready(function () { var Item = Backbone.Model.extend({ }); var item=new Item; item.title=’stabilo彩色铅笔’; item.price=24.50;

那么,我怎么将模型显示到网页上呢,比如这样:

如果用过服务器端开发引擎,都应该知道模型+模板,渲染,生成页面的过程。backbone也使用了类似的模式。

编写一个简单的模板:

<script type=”text/template” id=”item-tmpl”>
<div>标题:${title}</div>
<div>价格:${price}</div>
</script>
</head>

因为不参与显示,这个模板节点,写head部分了。可以发现语法类似jstl el表达式,或者以前的velocity模板引擎。

如何将模板和模型渲染,backbone.js并没有提供功能,但借助javascript灵活的特点,可以很容易的使用各种模板方案。我这里写个简单的,使用jQuery的tmpl插件,可在jQuery官方网站 下载,不过,这个插件已经不更新了,我后续会介绍其他模板方案。

下载该插件后:

<script type=”text/javascript” src=’Scripts/jquery.tmpl.js’></script>

然后,需要在html body里增加一个div,用于加载渲染后的输出:

<div id=”itemContent”></div>

剩下的就是js代码了:

var ItemView=Backbone.Model.extend({
el:$(‘#itemContent’),
template:$(‘#item-tmpl’).template(),

render:function(){
console.log(‘render’);
$.tmpl(this.template,this.model).appendTo(this.el);
return this;
}
});

var itemView=new ItemView;
itemView.model=item;
itemView.render();
});

这里,ItemView也是一个模型。它包含渲染输出的节点(el),模板对象,这里用到了jQuery tmpl插件的方法,另外需要编写一个render函数,这个函数中执行渲染并加载到指定dom节点下。

源代码见这里: https://github.com/MarshalW/BackBoneDemo/tree/v0.1

看起来还不错,不过也许,实现这个需求,使用backbone过于复杂了。是的,因为backbone适合复杂交互的应用开发,它的功能远不只这点儿。如果只是开发简单的交互,或者是开发一个网页而不是应用(app),那么就不适合使用backbone。

相关 [backbone js] 推荐:

backbone 之事件(events)

- - 博客园_首页
  最近用 backbone 做了一个项目,加深了对前端mvc理解. 一定要应用的熟练后,了解其思想后,再去阅读源码. 想写写自己对backbone的感悟. 接下来第一步就是backbone的event.   backbone的event 是其核心.  当我们user调用create 就会触发change事件.

通过helloworld来认识下backbone - Ruthless

- - 博客园_Ruthless
Backbone主要涉及3部分:model,collection和view. 而这个框架的优势在于:数据与视图分离,通过操作model来自动更新view. 根据我的个人经验,直接写个简单的例子是最最直观的,那么从hello world开始吧. 程序目标:创建人员,将人员添加入队伍,删除人员,清空队列.

DNSPod国内版全新亮相:前端使用Backbone技术

- - cnBeta.COM
国内最大第三方DNS解析服务商DNSPod国内新版于2012年元旦正式上线公测. 前端大胆使用Backbone.js框架,旨在为用户提供优质客户体验. DNSPod此次改版前端使用了Backbone.js,Seajs以及Mustache等先进技术. 其中Backbone的使用最为大胆,它是结合jQuery来构建复杂的 Web 前端交互应用.

WebView JS 交互

- - ITeye博客
WebView加jquery做页面会怎么样呢. // 创建WebView对象. // 把programList添加到js的全局对象window中,. // 这样就可以使用window.programList来获取数据. * 定义js回调java函数. // 绑定键盘的向上,向下按钮事件触发相应的js事件.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

來源請求.js

- 红烧鲤鱼 - Blog: timdream
很早以前就想講了,但講了大概又會被戰. 相較於英文維基百科,中文維基百科在社會和歷史條目充滿了 systemic bias. 但是那些主觀論述又不是編輯者有意加進去的,而是某種編輯者存在的社會所給予的暗示(Inception?)與集體共識,而不是原本百科全書應該有的可驗證的事實. 因為是暗示又是共識,所以有自覺的百科編輯者反而是少數;中文維基只好長成現在這個樣子了.

Js删除节点

- - JavaScript - Web前端 - ITeye博客
 方式一:传this参数调用方法:.  方式二:js方法中通过选择器获取节点:. //此处删除的是a节点 }. 方式三:通过jQuery方式获取节点:(尚未测试,有待测试. 此处a标签传this到js中,js通过this(即a节点)取parent(即p节点). (1)p.remove();可直接删除整个p节点.

JS游戏引擎列表

- sku - 酷壳 - CoolShell.cn
这里有一个网址收集了关于JS游戏引擎开发库的一个列表,转过来. 关于使用JS和HTML5做的一些小游戏,可参见《HTML5 小游戏展示》. Name Latest Release License Type Notes The Render Engine 1.5.3 MIT 跨浏览器; 大规模 API; 开源. 2 gameQuery 0.5.1 CC BY-SA 2.5 和 jQuery 一起使用 gTile 0.0.1 Tile based.

Deck JS: HTML5 幻灯片

- L - LinuxTOY
Deck.js 是一组开源的 JavaScript 类库,方便使用现代的 HTML5/CSS3/JS 技术创建幻灯片. 该软件十分适用于开源项目介绍,交互式的方式比单纯的文字说明更简洁易懂. 不废话了,赶紧前往该项目主页去体验 HTML5 时代的幻灯片吧. 分类: Productivity |. 收藏到 del.icio.us |.

JS三维模型库 Three.js

- Le - 开源中国社区最新软件
Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象. 你可以在它的主页上看到许多精采的演示. 不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏) 演示:http://mrdoob.github.com/three.js/.