`
yushine
  • 浏览: 200536 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Backbone JS框架指南

阅读更多



除非特别声明,所有日志都遵循 创作共用 版权协议,署名-非商业
需要用链接 的方式指明文章作者来源:Bruce Dou

Backbone 是一个前端 JS 代码 MVC 框架,被著名的 37signals 用来构建他们的移动客户端。它不可取代 Jquery,不可取代现有的 template 库。而是和这些结合起来构建复杂的 web 前端交互应用。

如果项目涉及大量的 javascript 代码,实现很多复杂的前端交互功能,首先你会想到把数据和展示分离。使用 Jquery 的 selector 和 callback 可以轻松做到这点。但是对于富客户端的WEB应用大量代码的结构化组织非常必要。

Backbone 就提供了 javascript 代码的组织的功能。Backbone 主要包括 models, collections, views 和 events, controller 。

Models 用来创建数据,校验数据,存储数据到服务器端, Collections 包含你创建的 functions ,Views 用来展示数据。

Models 还可以绑定事件。比如用户动作变化触发 models 的 change 事件,所有展示此model 数据的 views 都会接收到 这个 change 事件,进行重绘。

事件的绑定和触发

以下是object 绑定 alert 事件和匿名回调函数的代码例子,object 之后 触发 alert 事件,并且传入参数 “an event”

var object = {
}
;
 
_.extend(
object, Backbone.Events)
;
 
object.bind(
"alert", function(
msg)
 {

  alert(
"Triggered " + msg)
;
}
)
;
 
object.trigger(
"alert", "an event")
;

假如你的网页上事件很多也可以用proxy的方式来分发所有事件:

proxy.bind(
"all", function(
eventName)
 {

  object.trigger(
eventName)
;
}
)
;

Backbone 的 Models 是应用的核心

他包含了数据对象的属性,操作数据对象的函数。还实现和服务端交互的动作。

以下是定时从服务器端更新 channel 的数据:

// Poll every 10
 seconds to keep the channel model up-to-date.
setInterval(
function(
)
 {

  channel.fetch(
)
;
}
, 10000
)
;

以下是存储 book 的数据,这里通过重载 sync 函数,只让数据 alert 出来,sync 中的默认触发事件包括 fetch save refresh

Backbone.sync = function(
method, model)
 {

  alert(
method + ": " + JSON.stringify(
model)
)
;
}
;
 
var book = new Backbone.Model(
{

  title: "The Rough Riders",
  author: "Theodore Roosevelt"
}
)
;
 
book.save(
)
;

Backbone 的 Controller 用来对 URL 和事件进行绑定

以下下例子中,分别将不同的以#开头的 URL 片段 绑定到不同的函数,实现服务器端 MVC 模型中的 router 一样的功能

var Workspace = Backbone.Controller.extend(
{

 
  routes: {

    "help":                 "help",    // #help
    "search/:query":        "search",  // #search/kiwis
    "search/:query/p:page": "search"   // #search/kiwis/p7
  }
,
 
  help: function(
)
 {

    ...
  }
,
 
  search: function(
query, page)
 {

    ...
  }

 
}
)
;

值得提出的是 Backbone 的 router 也支持正则表达式的匹配

initialize: function(
options)
 {

 
  // Matches #page/10
, passing "10
"
  this.route(
"page/:number", "page", function(
number)
{
 ... }
)
;
 
  // Matches /117
-a/b/c/open, passing "117
-a/b/c"
  this.route(
/^(
.*?)
\/open$/, "open", function(
id)
{
 ... }
)
;
 
}

Backbone 的 Sync 默认通过调用Jquery的ajax方法来实现和服务器端的交互,实现数据的 CURD

比如 fetch 方法会触发 read 事件

Backbone 的 Views 用来接收用户的操作和修改 Model 的数据 ,另外通过 render 来展示数据

默认 render 并没有实现,你可以用 Mustache.js 或者 Underscore.js 来实现。

以下是接收用户操作的代码例子:

var DocumentView = Backbone.View.extend(
{

 
  events: {

    "dblclick"                : "open",
    "click .icon.doc"         : "select",
    "contextmenu .icon.doc"   : "showMenu",
    "click .show_notes"       : "toggleNotes",
    "click .title .lock"      : "editAccessLevel",
    "mouseover .title .date"  : "showTooltip"
  }
,
 
  render: function(
)
 {

    $(
this.el)
.html(
this.template(
this.model.toJSON(
)
)
)
;
    return this;
  }
,
 
  open: function(
)
 {

    window.open(
this.model.get(
"viewer_url")
)
;
  }
,
 
  select: function(
)
 {

    this.model.set(
{
selected: true}
)
;
  }
,
 
  ...
 
}
)
;

以下是数据渲染 render 的例子

var Bookmark = Backbone.View.extend(
{

  render: function(
)
 {

    $(
this.el)
.html(
this.template(
this.model.toJSON(
)
)
)
;
    return this;
  }

}
)
;

参考

http://documentcloud.github.com/backbone/

http://documentcloud.github.com/backbone/examples/todos/index.html

分享到:
评论

相关推荐

    跳棋游戏—backbone框架开发

    Backbone.js是一个轻量级的JavaScript库,主要用于构建可复用、可维护的单页应用(SPA)。它提供模型层、视图层和路由器功能,帮助开发者组织和管理前端代码。 首先,我们来看`draughts.html`,这很可能是游戏的主...

    singool:基于Backbone.js的框架,用于开发单页Web应用程序

    Backbone.js是一个JavaScript库,它提供了模型-视图-控制器(MVC)架构模式,帮助开发者组织代码,使得前端开发更加有序和高效。它强调数据模型和视图的绑定,以及事件驱动的编程方式。 Singool.js框架在其基础上...

    轻量级javascript 框架Backbone使用指南

    Backbone 是一款基于模型-视图-控制器 MVC 模式的轻量级javascript 框架 ,可以用来帮助开发人员创建单页Web应用。 借助Backbone 我们可以使用REST的方式来最小化客户端和服务器间的数据传输,从而实现了更快加速的...

    前端项目-backbone-pageable.zip

    【标题】"前端项目-backbone-pageable.zip" 涉及到的是一个基于Backbone.js框架的分页解决方案。Backbone.js是一款轻量级的JavaScript库,它为前端开发提供了模型(Model)、视图(View)、集合(Collection)以及...

    前端项目-backbone.radio.zip

    1. **Backbone.js框架**:Backbone.js是一个轻量级的JavaScript库,它为构建单页应用(SPA)提供了模型-视图-视图模型(MVVM)的架构模式,帮助开发者组织代码结构。 2. **Backbone.Radio**:Backbone.Radio是...

    Full Stack JavaScript Learn Backbone.js Node.js and MongoDB (2nd Edition).pdf

    Backbone.js作为前端JavaScript框架,提供了构建单页应用程序(SPA)所需的数据模型和视图管理能力。除此之外,书中还提及了***、Heroku和Windows Azure等云服务平台,这使得本书不仅局限于前端或后端,而是提供了一...

    前端项目-backbone.epoxy.zip

    1. **Backbone.js**:Backbone.js是一个轻量级的JavaScript库,为Web应用提供模型-视图-控制器(MVC)架构。它帮助组织代码,使得前端开发更有序,提供了事件处理、模型管理、路由等功能。 2. **Epoxy**:Epoxy是...

    kanban, Kanban 看板 is a Trello clone in Rails and Backbone.js.zip

    **Backbone.js**则是一个轻量级的JavaScript库,用于构建客户端的单页应用(SPA)。它提供了一套数据模型(Models)、视图(Views)、集合(Collections)和URL路由(Router)的结构,帮助开发者组织和管理前端代码...

    Backbone.js实现的俄罗斯方块游戏源码.zip

    Backbone.js是一个轻量级的JavaScript库,它提供了一种结构化的方式来组织前端应用,尤其适合构建复杂的单页面应用程序(SPA)。在这个“Backbone.js实现的俄罗斯方块游戏源码”中,我们可以深入理解如何利用...

    Backbone.Marionette.pdf

    《Backbone.Marionette.js: A Gentle Introduction》是一本专为希望深入了解Backbone框架及其扩展库Marionette的开发者准备的书籍。作者David Sulc通过本书提供了一个循序渐进的学习路径,从基础到高级,帮助读者...

    前端项目-backbone-forms.zip

    **标题解析:**"前端项目-backbone-forms.zip" 指的是一个包含前端开发项目的压缩文件,重点在于“backbone-forms”,这通常是指基于Backbone.js库的一个用于构建表单的框架。 **描述详解:**描述提到“前端项目-...

    backboneJS&nodeJS

    使用Express或Koa等框架,Node.js可以提供RESTful API,与Backbone.js的模型进行交互,实现数据的获取和保存。 在实际开发中,将Backbone.js与Node.js结合,可以创建高效的单页应用(SPA)。Node.js处理服务器端...

    前端项目-backbone.syphon.zip

    在本项目"前端项目-backbone.syphon.zip"中,我们主要关注的是Backbone.Syphon,这是一个用于Backbone.js框架的库,它专注于处理表单数据的序列化和反序列化。Backbone.js是一个轻量级的前端MVC(Model-View-...

    script经典框架3

    此外,还有一些其他的JavaScript框架,如Ember.js、Backbone.js等,它们在特定领域也有广泛的应用。 在深入学习和使用这些框架时,你需要理解以下关键概念: - **模块化**:了解CommonJS、AMD(RequireJS)和ES6的...

    Asp.net MVC + Backbone + React DEMO

    这是一个基于Asp.net MVC框架,结合Backbone.js和React.js技术构建的DEMO项目,旨在提供一个学习和参考的实例。让我们深入探讨一下这个项目中涉及的关键知识点。 首先,Asp.net MVC是一种广泛使用的Web应用开发框架...

    backbone-learn:学习backbone.js库

    - **文档(Documents)**:关于Backbone.js API的详细说明,可能包括扩展阅读材料和最佳实践指南。 学习Backbone.js不仅意味着理解和掌握这些核心概念,还包括熟悉如何在实际项目中使用它来组织和优化代码,提高开发...

    arcadia_backbone:在 Arcadia 中实现backbone.js

    "Arcadia" 可能是一个专为游戏开发、Web应用或其他互动式场景设计的框架,而 "backbone.js" 是一个著名的JavaScript库,用于构建前端MVC(模型-视图-控制器)结构的应用程序。 **描述分析:** 描述简单明了,直接...

    photowall-backbone:无限滚动照片墙,使用 Backbone.js

    "photowall-backbone" 这个标题揭示了我们正在讨论的是一个基于Backbone.js框架开发的项目,它的主要功能是创建一个无限滚动的照片展示墙。"无限滚动"是一种常见的网页设计技术,它允许用户在不翻页的情况下连续浏览...

Global site tag (gtag.js) - Google Analytics