Sinatra Sinatra + Backbone - To-do App 分享

kenshin716 · 2012年07月14日 · 最后由 icemark 回复于 2013年01月09日 · 6761 次阅读

这周接触 Sinatra, 并搭建了一个简单的 to-do App.

先简单谈谈使用感受, 轻量,是最大的优点,相信有代码洁癖的人会喜欢; 对 RESTful 的支持也很好,ajax 的交互体验一下就上去了。

=======================================

其次介绍下我做的这个小 Demo

我使用了 Sinatra+DataMapper+Sqlite3 作为服务端基础 前端使用了 jQuery+Underscore+Backbone 样式是 bootstrap

三个简单的表结构

用户 | 项目|todo

用户与项目的增删改查是同步的交互模式, todo 是异步的。

>$.ajax({
>   url: _model.url,
>   type: 'POST',
>   beforeSend: function(xhr) {
>               xhr.setRequestHeader('X-HTTP-Method-Override', 'PUT');
>        },
>   success: function(res, status, xhr){
>       _model.fetch();
>       _self.renderTask(res, status, xhr);
>   },
>   error: _self.error
>});

通过设定请求头的 X-HTTP-Method-Override 参数,实现 RESTful

截图:

git: [https://github.com/qiaosu/Sinatra-Backbone-TodoApp]

第一次发帖,请多多关照,多提意见。

ps. 小弟 ruby 新手,代码调试真累啊...

谢谢分享,这个项目代码非常清晰,可以拿来给新手做 case study 建议,使用 Sass 重构一下 CSS,使用 CoffeeScript 重构一下 JavaScript.

代码没看,不过 backbone 默认使用 RESTful,如果 model 有 idAttribute,在 save 的时候默认是 put,并不需要自己手动设置的。

为什么注册后不能跳转?

backbone 确实对前端提升了很多,但我还是觉得太复杂,特别是在用 multiple routes 的时候。和 rails 结合的时候传输数据还要特别注意,不然非常容易 mass-assignment. 我最近做了一个小程序,rails+backbone, 后端 6 个小时,花在 backbone 上 40 个小时。

#4 楼 @zhex 我现在基本一个星期 Rails 花 5 个小时,JS 代码花 50+ 个小时

现在前端喜欢搞个 MVC 出来了

@lgn21st 不知道为什么,我对 sass, less 等,和 coffeescript 的接受度还不高. 总感觉要重新学套语法,且在浏览器端调试用的还是原生语言。

@zhex 我觉得 backbone 已经很清晰了,同样的业务需求,使用 backbone 减少了至少 50% 工作量。

@kenshin716 看下 meteor.com 这个框架,也许你会有不同的想法。虽然现在他还是个玩具,但是我觉得这个才是真正前端快速实现代码的体验,我比较看好他。

对比 Backbone 我更喜欢使用 spine,更为简洁,甚至都不用依赖于 Underscore。 Meteor 这个框架我也相当看好 BTW,分享很赞,学习

也用 backbone。其它的看看去。

推荐 ember.js

@xhh 说实话,现在很害怕那些 xxx.js 的 MVC 框架,好像每个月都会冒几个出来,直接造成了选择困难综合症啊。前阵子看了篇文章有个老外居然试了 12 个(还是 10 个)这种 js 的 MVC 框架,最后也是选了 Ember.js,我真佩服他居然这么能折腾。

@PrideChung 所以我比较推荐 backbone 和 knockout(knockback), 毕竟比较活跃,代码质量和文档都上乘,遇到问题也能找到地方问。用熟了可以自己尝试写,就是一些中间层,然后再可以挑选一些框架,看哪些的代码和自己的思路比较近似。

这个程序登录不了,不知道为什么

#14 楼 @kenshin716 hi,Serial 是什么类型?

@hicfan An auto-increment integer key

@chucai 有可能我之前传了不够稳定的版本,可以再试试...

javascript 难学呀

更新了个版本,现在可以提供在线预览了哦 http://todo.decimage.com 如果懒得注册,可以用测试账号:[email protected]/111111

  • 增加了任务的批注,支持 markdown 语法;
  • 增加了 timeline, 借鉴了一点 TimeLineJs;
  • 增加了项目管理面板;
  • 修复了一些 bugs.

Mark! 非常精彩!

Cool!

可以拿来学习;-)

代码很清晰,可读性好,适合学习 Sinatra, Backbone。 缺点没有测试代码。

#24 楼 @vincent 确实,如果增加一部分测试代码,就更完美了。

backbone,用他做过一个简单的 board,后面也是 sinatra,数据库和你的不同。嘿嘿

scope 不能用 不太方便吧,感觉加 ActiveRecord 进去会用起来顺手

需要 登录 后方可回复, 如果你还没有账号请 注册新账号