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. 【项目 · Wonderland】预则立 && 他山之石

    [软 工 实 践 · 团 队 作 业] 预则立&&他山之石 标签:WonderLand Part 0 · 简要目录 Part 1 · 团队计划 Part 2 · 团队访谈 Part 3 ...

  2. css选择器补充

    前面文章总结了常用的8种选择器,今天再来补充5中选择器,其中一部分是css3中新加入的. 1.相邻选择器 E+F { sRules } 相邻选择符只会命中符合条件的相邻的兄弟元素. 2.兄弟选择器 E ...

  3. Python接口自动化--URL参数的编码和解码 6

    # _*_ coding:utf-8 _*_ #python2 import urllib #有时,需要从上一个请求的url获取参数,传到下一个请求中,中文会显示为编码的形式,这时候就需要进行解码 u ...

  4. SASS对css的管理

    一.SASS简介 SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常的一般 ...

  5. Oracle_spatial的常见错误与注意事项

    常见的错误 1.ORA-13226:没有空间索引接口将不被支持 当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误.这可能会发生在当你使用的列上没有空间索引.或者优化器没 ...

  6. oracle偏爱hostname

    记住: 只要是在使用oracle他家的产品,比如oracle database , weblogic :或者诸如此类,等等,等等,随便别的什么东西 首先要查改: /etc/hosts 127.0.0. ...

  7. WorldWind源码剖析系列:配置载入器类ConfigurationLoader

    配置载入器类ConfigurationLoader主要从指定的路径中加载保存星球相关参数的xml文件,从中读取数据来构造星球对象及其所关联的可渲染子对象列表并返回.该类的类图如下所示. 该类所包含的主 ...

  8. Python2.7-tempfile

    tempfile 模块,生成临时文件夹或文件,所生成的文件(夹)的名字都是随机的,但可以指定前缀.后缀和路径,中间由6位随机字符组成.应用程序经常要保存一些临时的信息,这些信息不是特别重要,没有必要写 ...

  9. keepalived 做全端口映射

    global_defs {    lvs_id BACKUP }   vrrp_sync_group VGM {     group {        VI_1     } }   vrrp_inst ...

  10. Java Web乱码分析及解决方案

    1.  什么是URL编码. URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value,将他们以name/value编码方式作为URL的一部分或者分离的发送到服 ...