TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之二 数据处理

当我们使用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])来强制排序
    });
});
时间: 2024-11-05 18:05:08

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

TodoMVC中的Backbone+marionetteJS+requireJS例子源码分析之一

Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构建或者扩展了很多新的东西,如:Application,Region,ItemView,CollectionView,CompositeView,LayoutView,AppRoute,Controller等等,把很多重复性的工作变成配置,程序入口引入了集中处理器Application,貌似Mario

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

这个版本的TodoMVC中的视图组织划分比较细,更加易于理解,这也得益于Marionette为我们带来了丰富的视图选择,原生的backbone只有views,而Marionette则有itemview, collectionview, compositeview 和layoutview. js/templates.js /*global define */ define(function (require) {//这里用了简写,因为require.js是CommonJS 模块,相当于 defin

Android例子源码--炫酷的仪表盘网速测试

Android例子源码--炫酷的仪表盘网速测试 本项目是一个仪表盘网速测试的安卓版本,原理就是下载一个固定大小的文件来进行测试,可以测试当前速度,和平均速度,跟电脑上的测速差不多,有一个很精美的仪表盘效果.本项目编码UTF-8默认编译版本4.2.2. 下载地址:http://www.devstore.cn/code/info/100.html 运行截图:    干货推荐: Google Android 官方培训教程中文版 第一行代码 Android编程权威指南 疯狂Android讲义(第2版)

Android例子源码动态绘制折线、圆柱、饼状图

Android例子源码动态绘制折线.圆柱.饼状图 仿天气类app绘制饼状图.折线图.柱状图的实现效果,效果挺不错,例子没有使用第三方类库,全部都是使用Canvas实现.需要的朋友可以自己下载研究下. 下载地址:http://www.devstore.cn/code/info/999.html 运行截图:   

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

在java编程或者面试中经常会遇到 == .equals()的比较.自己看了看源码,结合实际的编程总结一下. 1. ==  java中的==是比较两个对象在JVM中的地址.比较好理解.看下面的代码: 1 public class ComAddr{ 2 public static void main(String[] args) throws Exception { 3 String s1 = "nihao"; 4 String s2 = "nihao"; 5 Str

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

1. 信号量Semaphore的介绍 我们以一个停车场运作为例来说明信号量的作用.假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了三辆车,看门人允许其中它们进入进入,然后放下车拦.以后来的车必须在入口等待,直到停车场中有车辆离开.这时,如果有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开一辆,则又可以放入一辆,如此往复. 在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用.信号量是一个非负整数,表示了当前公共资源的可用数目(在上面的

Android研发中对String的思考(源码分析)

1.常用创建方式思考: String text = "this is a test text "; 上面这一句话实际上是执行了三件事 1.声明变量 String text; 2.在内存中开辟空间 (内存空间一) 3.将变量的text的引用指向开辟的内存空间 当有 text = "this is a change text"; 这一句话执行了两件事 1.在内存中开辟空间 2.将变量text 的引用指向 新开辟的内存空间 3.内存空间一此时依然存在,这就是说明了Stri

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

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用 常用HandlerMethodArgumentResolver介绍 常用HandlerMethodReturnValueHandler介绍 本文开头现象解释以及解决方案 编写自定义的HandlerMet

【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,