7、backbone实例todos分析(一)

用vue实现todostodos里面包含了增删改查功能,不会的看过来,保准你会!!! .先写静态页面,然后把静态页面分组件划分,最后再写效果,效果有增删改查。 二.效果展示: 三.代码展示: todos.css: *{ padding: 0; margin: 0; } ul,ol,li{ list-style: none; } body{ background-color: #F5F5F5; } #app{ width: 550px; margin: 10px auto; } .title{ height: 150px; line-height: 150. 阅读详情

​经过前面的几篇文章,backbone中的modelcollectionrouterview,都简单的讲了一下,我觉得看完这几篇文章,你应该达到的水平,或者说我要达到的目的就是:已经能够在自己的web项目或者是平时的练习中用的上backbone了。

其实对于一个web开发老手来说,基本上看完前面的内容,你已经可以把backbone的使用和自己的开发经验结合起来进行应用了,要想更进一步的话需要去看backbone的官方文档,或者去看官方实例。

这里我就backbone官网上的实例todos进行下分析,毕竟人家自己的东西,自己写出来应该能够把backbone的特性发挥的淋漓尽致,并且代码应该也是足够优秀的,不然也会放出来让大家参考。

好了,废话这么多,下面开始正题。todos的代码这里下载:https://github.com/documentcloud/backbone/

​首先应该来看下功能,先看截图:
todos

​从这个界面我们可以总结出来,这个Todos有哪些功能:

1、添加任务。

2、修改任务(包括内容,状态)。

3、删除任务。

4、任务完成情况统计。

总体上就这四项功能。

​这个项目仅仅是在web端运行的,没有服务器进行支持,所以项目中使用了一个叫做backbone-localstorage的js库,用来把数据存储到前端。

因为backbone为mvc模式,根据对这种模式的使用经验,我们应该从分析其数据模型开始。当然,你也可以从其他地方入手。

这里我们显然是可以看到它的源代码的,所以直接来看其model层,:

/**

   *基本的Todo模型,属性为:content,order,done。

   **/


  var Todo = Backbone.Model.extend({

    // 设置默认的属性

    defaults: {

      content: "empty todo...",

      done: false

    },

    //确保每一个content都不为空

    initialize: function() {

      if (!this.get("content")) {

        this.set({"content": this.defaults.content});

      }

    },

    // 将一个任务的完成状态置为逆状态

    toggle: function() {

      this.save({done: !this.get("done")});

    },



    //从localStorage中删除一个条目

    clear: function() {

      this.destroy();

    }

  });

这段代码是很好理解的,不过我依然是画蛇添足的加上了一些注释。这个Todo显然就是对应页面上的每一个任务条目。那么显然应该有一个collection来统治(管理)所有的任务,所以再来看collection:

/**

   *Todo的一个集合,数据通过localStorage存储在本地。

   **/


  var TodoList = Backbone.Collection.extend({

    // 设置Collection的模型为Todo

    model: Todo,

    //存储到本地,以todos-backbone命名的空间中
    localStorage: new Store("todos-backbone"),

    //获取所有已经完成的任务数组

    done: function() {

      return this.filter(function(todo){ return todo.get('done'); });

    },



    //获取任务列表中未完成的任务数组

    remaining: function() {

      return this.without.apply(this, this.done());

    },



    //获得下一个任务的排序序号,通过数据库中的记录数加1实现。

    nextOrder: function() {

      if (!this.length) return 1;

      return this.last().get('order') + 1;

    },

    

    //Backbone内置函数,根据todo对象的加入顺序进行排列

    comparator: function(todo) {

      return todo.get('order');

    }

  });

collection的主要功能有以下几个:

1、按序存放Todo对象;2、获取完成的任务数目;3、获取未完成的任务数目;4、获取下一个要插入数据的序号。

这里面有三个新的函数需要解释下:

第一个是comparator,这是backbone的内置函数,起作用就是collection中数据的排序依据。文档参考这里:http://documentcloud.github.com/backbone/#Collection-comparator

第二个是获取完成任务数目时调用的this.filter 这个函数,它是underscore的内置函数,作用是遍历当前对象,然后过滤出对象中指定内容为True的对象,并将这些对象放到数组中返回。参考文档:http://documentcloud.github.com/underscore/#filter

第三个是获取未完成任务数据是调用的 this.without.apply(this, this.done())这个函数,without也是underscore里面的函数。而后面的那个apply是javascript的内置函数,作用是把当前的上下文传入到函数中。这段代码的意思其实就是从this(也就是collection中),排除已经完成的任务(this.done()),返回数组。参考:http://stackoverflow.com/questions/9137398/backbone-js-todo-collection-what-exactly-is-happening-in-this-return-stateme

这篇文章先分析到这里,下篇文章继续分析。

PS:这一系列的文章目录正在整理,所以前面的几节内容请先移步到我的新博客:the_fire新博客

Toodles直接用代码里的TODOs做项目管理 Toodles - 直接用代码里的TODOs做项目管理 立即下载

相关推荐

backbone实例demo

backbone+seajs实战

Vue - Todos 案例

vue 实现 todos 具体代码思路和代码 给 input 框绑定回车事件,回车后把数据请求到 vuex 中 把数据保存至本地存储中 给下拉箭头绑定点击事件,点击则给所有多选框进行反选 判断是否选中,如果选中则禁用 给数组进行过滤,然后渲染至页面中 双击 input 框 则允许改变样式,平时则禁止改变

weixin_62897746的博客 1533

backbone官方实例

backbone的官方代文档 包含js文件以及相应demo

Todos案例()——业务分析 & 基本布局

Todos案例——业务分析 & 基本布局 业务分析 todos 页面模板 下载项目压缩包后,使用时,需要先安装依赖包 todomvc-common/base.css todomvc-app-css/index.css npm install yarn intall 1、直接打开index.html 2、本地启动打开 实现基本布局 安装依赖包 修改模板的相关标签结构,从而符合JSX语法 yarn add todomvc-common todomvc-app-css 导

weixin_44867717的博客 1263

Vuex案例————todos(任务事项)

创建vuex项目,安装相关依赖:(axios、ant-design-vue(UI库))修改页面上展示的数据列表(全部、未完成,已完成)

一只猫 684

个简单todos的例子

文章目录效果图代码 效果图 代码 主要代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <link r

m0_45272038的博客 945

todos案例练习

todos案例 1 提供的数据和 HTML结构 引入todos的CSS样式 (HTML和 CSS 已经写好 我们需要改成Vue动态渲染的) 2 把数据渲染到页面上 根据completeed 的状态动态给li 绑定类名 未完成状态:不需要样式 完成状态: 类名为 completed 编辑状态:类名为 editing 如果completed 为 true 则给当前li 添加 completed input type=“checkbox"中绑定v-model时=的参数为唯

weixin_47169270的博客 1092

9、backbone实例todos分析(三)总结

在前两篇文章中,我们已经对这个todos的功能、数据模型以及各个模块的实现细节进行了分析,这篇文章我们要对前面的分析进行个整合。前面我们说过,有了肉和菜,剩下的就是要怎么吃。我个人倾向于菜和肉起吃,这样不会觉得腻  首先让我们来回顾下我们分析的流程:先对页面功能进行了分析,然后又分析了数据模型,最后又对view的功能和代码进行了详解。你是不是觉得这个分析里面少了点什么?没错了,就知道经

the_fire的技术博客 8743

backbone官方例子todos分析

原文链接:http://blog.csdn.net/zhulinu/article/details/7488885 感谢 backbonejavascript当中比较有名的mvc框架,最近更新也比较快,影响力也越来越大了。不过中文资料不太多。 api中文参考文档:http://www.csser.com/tools/backbone/backbone.js.html,是老版本的,可以

LuckySummer* 714

todos

todos

backbone 实例

backbone的API 及实例

backbone实例todos分析

backbone实例todos分析) 5690°C 作者:the5fire | 标签: backbone.js入门  todos分析  | 发布:2012-03-30 3:12 p.m. 新版地址: backbone第二版更新. ​经过前面的几篇文章,backbone中的model,collection,router,view,都简单的讲了下,我觉得看完这几篇文章

dftwilson的专栏 388

backbone实例todos分析(三)总结

在前两篇文章中,我们已经对这个todos的功能、数据模型以及各个模块的实现细节进行了分析,这篇文章我们要对前面的分析进行个整合。前面我们说过,有了肉和菜,剩下的就是要怎么吃。我个人倾向于菜和肉起吃,这样不会觉得腻 :-)首先让我们来回顾下我们分析的流程:先对页面功能进行了分析,然后又分析了数据模型,最后又对view的功能和代码进行了详解。你是不是觉得这个分析里面少了点什么?没错了,就知道经验...

weixin_30362801的博客 96

11、backbone实例todos扩展+web服务器

在第7节的时候,我们对backbone的功能进行了分析,建立了web端的model。在本节中我们将对原先的todos进行扩展,使其能够将数据存到server端的数据库中。这里我们使用的是django+sqlite来进行实现。 现在我们应该对应着建立server端的model。不过在此之前,为了方便不熟悉django的童鞋,简单的写下开发过程: 1、创建工程 根据上篇中介绍的dj

the_fire的技术博客 7549
上一篇: python十个实战项目
下一篇: 1.初识backbone.js
the_fire
博客等级 码龄18年 662粉丝 257原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值