当我们使用jQuery时大部分时间是聚焦于Dom节点的处理,给Dom节点绑定事件等等;前端mvc框架backbone则如何呢?

M-Model,Collection等,是聚焦于数据的处理,它把与后台数据的交互封装好,然后我们使用时可以给数据的变化绑定事件,可以相应的去更新到Dom(这里是View)

V-View(Marionette扩展了,有ItemView,CollectionView,CompositeView和LayoutView),则聚焦于处理Dom节点

C-Controller:  Router(Marionette扩展了,有Controller) 用于解释URL的路由,监听URL变化然后,取相应的Model并更新相应的View

总的来说使得以前要编写复杂的数据与Dom节点交互代码变得简单,可配置,明了。

下面是两个数据处理的模块

js/models/Todo.js

/*global define */
define([
'backbone',
'localStorage'//backbone localStorage插件块,用来提供Restful API,只不过数据是以html5的local storage形式存储,当后台使用
], function (Backbone) {
'use strict'; return Backbone.Model.extend({
localStorage: new Backbone.LocalStorage('todos-backbone'),//用于访问local storage 可以不用理它 defaults: {//todo model默认的数据形式
title: '',
completed: false,
created: 0
}, initialize: function () {//model初始化时如果是新的则更新到后台数据库(这里是新增到local storage)
if (this.isNew()) {
this.set('created', Date.now());
}
}, toggle: function () {//todo model向外提供的改状态(completed:true/false)的函数,可以看到在TodoItemView.js会引用此函数
return this.set('completed', !this.get('completed'));
}
});
});

js/collections/TodoList.js

/*global define */
define([
'backbone',
'models/Todo',
'localStorage'
], function (Backbone, Todo) {
'use strict'; return Backbone.Collection.extend({
model: Todo,//collection数据集的个体model是Todo localStorage: new Backbone.LocalStorage('todos-backbone'), getCompleted: function () {//TodoList collection向外提供获取completed为true的数据集的函数,可以看到在CompletedCount.js会引用此函数
return this.where({completed: true});
}, getActive: function () {//TodoList collection向外提供获取completed为false的数据集的函数,可以看到在ActiveCount.js会引用此函数
return this.where({completed: false});
}, comparator: 'created'//model的排序是按created来排序,也可以调用collection.sort([options])来强制排序
});
});

TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之二 数据处理的更多相关文章

  1. TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之一

    Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构 ...

  2. TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之三 Views

    这个版本的TodoMVC中的视图组织划分比较细,更加易于理解,这也得益于Marionette为我们带来了丰富的视图选择,原生的backbone只有views,而Marionette则有itemview ...

  3. Orleans例子源码

    这是Orleans系列文章中的一篇.首篇文章在此 我共享以下我现在写教程的简单的Orleans例子源码. 这个代码已经是我为了写word改动过了的.不过大体内容是通用的. 我写博客总体想法是:去除所有 ...

  4. Shiro官方快速入门10min例子源码解析框架2-Session

    Shiro自身维护了一套session管理组件,它可以独立使用,并不单纯依赖WEB/Servlet/EJB容器等环境,使得它的session可以任何应用中使用. 2-Session)主要介绍在quic ...

  5. java中的==、equals()、hashCode()源码分析(转载)

    在java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际的编程总结一下. 1. ==  java中的==是比较两个对象在JVM中的地址.比较好理解.看下面的代码: ...

  6. Vue3中的响应式对象Reactive源码分析

    Vue3中的响应式对象Reactive源码分析 ReactiveEffect.js 中的 trackEffects函数 及 ReactiveEffect类 在Ref随笔中已经介绍,在本文中不做赘述 本 ...

  7. Java并发包中Semaphore的工作原理、源码分析及使用示例

    1. 信号量Semaphore的介绍 我们以一个停车场运作为例来说明信号量的作用.假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了三辆车,看门人允许其中它们进入进入,然后放下车拦.以后 ...

  8. MNIST 例程源码分析 TensorFlow 从入门到精通

    按照上节步骤, TensorFlow 默认安装在 /usr/lib/python/site-packages/tensorflow/ (也有可能是 /usr/local/lib……)下,查看目录结构: ...

  9. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

随机推荐

  1. elasticsearch curl operation

    Elastic Search API Index.简单的介绍了使用Elastic Search 如何建立索引. ElasticSearch-API-Index 索引创建API允许初始化一个索引.Ela ...

  2. 【转】PHOTOSHOP常用快捷键大全

    PHOTOSHOP常用快捷键大全 一.文件新建 CTRL+N打开 CTRL+O 打开为 ALT+CTRL+O关闭 CTRL+W保存 CTRL+S 另存为 CTRL+SHIFT+S另存为网页格式 CTR ...

  3. Node.js入门笔记(1):基本概念

    Node.js和JavaScript: 核心都是ECMAScrit,比如数据类型,语法结构,内置对象等等. 但是在js中顶层是window 在node中的不存在这个window(console.log ...

  4. JDK Collection 源码分析(1)—— Collection

    JDK Collection   JDK Collection作为一个最顶层的接口(root interface),JDK并不提供该接口的直接实现,而是通过更加具体的子接口(sub interface ...

  5. c++11 中成员变量初始化的顺序

    参考C++11FAQ https://www.chenlq.net/cpp11-faq-chs 11以后可以直接在类里面初始化成员变量,类似这样 class A { int a=1; const in ...

  6. Protecting against XML Entity Expansion attacks

    https://blogs.msdn.microsoft.com/tomholl/2009/05/21/protecting-against-xml-entity-expansion-attacks/ ...

  7. javascript 函数与对象

    javascript中的函数是非常重要的概念,也是比较难于理解的一个知识点! 下面就来聊聊函数: JS基于对象:什么是基于对象呢?简单的说所有代码都是"对象"; 比如函数: fun ...

  8. URL、URN、URI的区别?

    URL.URN.URI区别 既然Web应用程序的文件等资源是放在服务器上,而服务器是因特网(Internet)上的主机,当然必须要有个方法,告诉浏览器到哪里取得文件等资源.通常会听到有人这么说:“你要 ...

  9. 《征服 C 指针》摘录2:C变量的 作用域 和 生命周期(存储期)

    在开发一些小程序的时候,也许我们并不在意作用域的必要性.可是,当你书写几万行,甚至几十万行的代码的时候,没有作用域肯定是不能忍受的. C 语言有如下 3 种作用域. 1.全局变量 在函数之外声明的变量 ...

  10. Daily Scrum Meeting ——ThirdDay

    一.Daily Scrum Meeting照片 二.Burndown Chart 三.项目进展 1.完成了github上的文档整理 Transcend/ActivityHelper 2.主界面侧滑框的 ...