Todo是怎么实现的?

前面两篇博客分别介绍了MVC和Backbone.js的逻辑,但是实战获真知,在来一篇来显示下Todo是怎么通过Backbone.js连接起来的。

忽略掉所有的代码,我们只是打开todos.js。

先从整天上看,整个代码中有以下几个类,

Model:Todo

Collection: TodoList

View: TodoView, AppView.

页面中还有一个比较奇怪的符号,你也许需要注意,

看到这里,我们大概懂了这些代码是来做什么的了,下面就可以去细看各个类中具体做了哪些工作,从上篇博客中我们知道,Backbone.js也是用事件来驱动的,所以我们直接去看两个View类中的事件处理函数,

AppView:

第一个事件是处理了输入框中的回车事件,第二个函数是处理了清楚所有Todo事件,第三个函数是处理了选择所有的Todo的事件。

在转向另外一个TodoView,我们可以看到events中分别注册了选中单选框事件,编辑,删除,回车后完成编辑,停止编辑事件。

现在我们可以将目光转向Model了,Model十分简单,只有一个保存数据到localstorage的操作。

回想我们对Backbone.js的介绍,Backbone.js是怎么连接起来的呢?View来处理对事件的相应并把数据传送给Model,Model处理完成后去通过View去调用它的render函数来渲染对应的元素。这下整个页面的逻辑就豁然开朗了,前面还提到了模板,模板是来做什么呢?这里的模板和Asp.net的模板有几分类似,不过这里的模板看上去更加小巧下,他只是页面上一个很小的元素。看起来很神奇吧。

ROCKET框架学习

Rocket是一个基于Backbone.js的webapp开发框架,在他的介绍文档中总结了Rocket的一系列优点:

化繁为简: 分而治之的控制模型,提供一种MVC分解模型,将复杂应用逻辑分解成树状控制结构,每个控制节点粒度(代码规模)适中。

并行开发:满足并行开发需求,使SPA程序多人合作开发成为可能。

有章可循:支持一系列的规范和流程,使开发更加顺手,利于功能模块的复用和后期维护。

快速开发:基于框架进行webapp开发,节省重复造轮子的时间,丰富的脚手架帮助工程师迅速搭建webapp产品。

既然Rocket有这么炫目的优点,我们倒真有必要去看下这个东西到底是什么样子。打开HelloRocket的页面,我们的第一反应是这个是用来做网页PPT的那货吧。还是先不要关心细节而是打开它主要js代码的实现,我们看到我们熟悉的Backbone.js的身影。还记得前一篇博客介绍的么?Backbone.js有两套系统,一个是Model, View,你可以在Todo中看到他们大放异彩,另外一套是router, history,后者可要在Rocket中大显身手了。Rocket对URL上的页面链接进行了封装,并加入一些绚丽的动画效果,于是你就看到HelloRocket的Slide效果了。

-----------------------------------

Xu Wang

Tsinghua, School of Software

Email:darenwang11@gmail.com

QQ:2290826962

Todo&Rocket的更多相关文章

  1. TODO:macOS编译PHP7.1

    TODO:macOS编译PHP7.1 本文主要介绍在macOS上编译PHP7.1,有兴趣的朋友可以去尝试一下. 1.下载PHP7.1源码,建议到PHP官网下载纯净到源码包php-7.1.0.tar.g ...

  2. TODO:Laravel增加验证码

    TODO:Laravel增加验证码1. 先聊聊验证码是什么,有什么作用?验证码(CAPTCHA)是"Completely Automated Public Turing test to te ...

  3. TODO:Laravel 内置简单登录

    TODO:Laravel 内置简单登录 1. 激活Laravel的Auth系统Laravel 利用 PHP 的新特性 trait 内置了非常完善好用的简单用户登录注册功能,适合一些不需要复杂用户权限管 ...

  4. TODO:Laravel 使用blade标签布局页面

    TODO:Laravel 使用blade标签布局页面 本文主要介绍Laravel的标签使用,统一布局页面.主要用到到标签有@yield,@ stack,@extends,@section,@stop, ...

  5. TODO:搭建Laravel VueJS SemanticUI

    TODO:搭建Laravel VueJS SemanticUI Laravel是一套简洁.优雅的PHP开发框架(PHP Web Framework).可以让你从面条一样杂乱的代码中解脱出来:它可以帮你 ...

  6. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  7. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  8. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

  9. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

随机推荐

  1. PHP常用算法和数据结构示例

    <?php header("content-type:text/html;charset=utf-8"); $arr=array(3,5,8,4,9,6,1,7,2); ec ...

  2. 随手练——HDU 1078 FatMouse and Cheese(记忆化搜索)

    http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意: 一张n*n的格子表格,每个格子里有个数,每次能够水平或竖直走k个格子,允许上下左右走,每次走的格子 ...

  3. Array对象的方法

    * Array.isArray(对象)---->判断这个对象是不是数组 * instanceof关键字 * .concat(数组,数组,数组,...) 组合一个新的数组 * .every(函数) ...

  4. opencv——对象提取与测量

    #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...

  5. Android Des加密解密

    算法转自:http://www.linuxidc.com/Linux/2011-08/41866.htm import java.security.Key; import java.security. ...

  6. jqgrid editrules参数说明

    转载至:jqgrid的editrules参数 以下为内容留存记录. editrules    editrules是用来设置一些可用于可编辑列的colModel的额外属性的.大多数的时候是用来在提交到服 ...

  7. Python基础之公共方法

    公共方法:就是列表,元组,字典,字符串能共同使用的方法: Python内置函数 内置函数罗列 函数 描述 备注 len(item) 计算容器中的元素个数 del(item) 删除变量 del有两种方法 ...

  8. 使用MySQL命令行修改密码

    格式:mysqladmin -u用户名 -p旧密码 password 新密码 1.给root加个密码ab12.首先在DOS下进入目录mysql\bin,然后键入以下命令    mysqladmin - ...

  9. Android WebView漏洞(转)

    一.漏洞描述 近期,微信等多款安卓流行应用曝出高危挂马漏洞:只要点击好友消息或朋友圈中的一条网址,手机就会自动执行黑客指令,出现被安装恶意扣费软件.向好友 发送欺诈短信.通讯录和短信被窃取等严重后果. ...

  10. Django Rest Framework源码剖析(七)-----分页

    一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供 ...