开源项目 发布了 smart-time-ago,欢迎大家试用,提意见,贡献代码。:D

poshboytl · 2012年07月20日 · 最后由 poshboytl 回复于 2012年10月03日 · 6288 次阅读

昨天发布了一个开源库 smart-time-ago,用于更新相对时间,在此也宣传一下啦。 https://github.com/pragmaticly/smart-time-ago :D

这个项目是从我们的产品 http://pragmatic.ly/ 中剥离出来的,并且从http://timeago.yarp.com/ 项目中获得了很多灵感。

为什么叫 smart time ago 呢?

其实它会最大的特点是根据最新的时间来调整扫描时间间隔。

具体大家可以看看 REAMDE :) https://github.com/pragmaticly/smart-time-ago/blob/master/README.md

目前还不支持 i18n. 这个应该会在最近加上。欢迎大家贡献代码。:D

稍后还会做一个 gem 包起来,再加一些 helper 方法,便于 Rails 项目使用。

可以给大家说明一下 smart-time-ago VS timeago 的区别

#1 楼 @huacnlee 主要的特点是动态的更改 interval 的时间。 在有些情况下,一直保持 60 或者 30 秒的扫描间隔 并不太好...

还有就是 smart_time_ago 相对时间的规则和 Rails 的 time_ago_in_words 保持完全一样的...

#3 楼 @huacnlee 关键在时间的刷新吧,页面本身不刷新的情况下,smart 也会自动随时间流逝而更新,并且根据需要调整更新间隔

#1 楼 @huacnlee timeago 是每 60 秒更新一下时间,同时,必须作用于整个页面,比如对于 Ruby China 而言,comments 列表和文章内容本身的相对时间必须同时更新。

smart-time-ago 做了两点修改,一是这个时间间隔是根据当前的最新时间来算的,而不是固定的 60 秒,这样就避免了不必要的抢占 CPU 资源。第二个是可以分开处理,对于 comments 列表可能会勤更新时间,而文章内容本身就没什么必要了。Ruby China 或许不是个很好的例子,对于Pragmatic.ly这样的实时应用来说就能体验出差别了。

#5 楼 @yedingding 我还是觉得用处不大,如果是实时或者准实时的显示,一般不会只有时间要更新的

#4 楼 @fsword 对于,基本对于实时应用来说这歌是个比较 Critical 的问题,比如 Facebook 的 timeline 其实也是用这个策略调整的。

#1 楼 @huacnlee 比如说一个网站,他最新的一篇文章是“2 hours ago”发布的。这种情况下,如果你用 timeago 他任然会 60 秒去扫描一次你的 document。而这是没有必要的,资源浪费。这种情况下应该把间隔时间增长,比如 15 分钟,比如半个小时等...

而 smart_time_ago 就会去根据你最新的时间来调整扫描的时间间隔...

#6 楼 @fsword 只有时间要更新啊,还是拿Pragmatic.ly为例子,一个是 notifications feeds, 内容是不会变得,但是时间会变,1 minute ago, 15 minutes ago, 1 hour ago. 另一个场景是 comments, 内容也是不对变的。时间会变。

#8 楼 @poshboytl 哦,明白了 timago 在 15 分钟一下的时候,60 秒更新一次是有意义的,但是当时间再大些的时候(一天前,一年前,一个月前)这些就没必要更新了

#9 楼 @yedingding 恩,我想了一下,对于那些不会变化的消息性质的内容,这个是最佳使用场景,timeline 上的东西都是不能改变的,所以也非常适合

#10 楼 @huacnlee 对于 Ruby China 90%+以上的帖子来说,都是没必要 60 秒更新一次的。但是因为每个帖子的访问时间不长,所以也不是啥问题。

#12 楼 @yedingding 赶紧写成 gem,然后给提个 pull request 过来吧!

#13 楼 @huacnlee 哈。可以的,还需要支持 I18N. 这样你这边只要更新 gem 就可以了。API 是完全兼容的。但是我们建议你包在特定的 scope 里,比如 comments container, 而不是整个 document.

#14 楼 @yedingding 原来就在使用 http://timeago.yarp.com/ ,应该可以很直接地切换过来吧

#15 楼 @HungYuHei 嗯。换一个库就可以了。只是现在不支持 I18N, 如果你没这方面的需求的话可以直接换。另外,看你的应用场景,我比较喜欢包在 container 上,而不是 time tag 本身。

有人来喜欢一下这个帖子吗.... -.-

#17 楼 @yedingding 纯粹的技术贴啊,大家都光顾着看了,忘了喜欢了! 😄

发布了新版本,做了不少性能上的改进。去掉了很多浮点数的比较... 欢迎大家帮忙 retweet 呀.... :D https://twitter.com/pragmatic_ly/status/228534494976696320

blog post: http://blog.pragmatic.ly/we-opened-source-smart-time-ago

github page: http://pragmaticly.github.com/smart-time-ago/

@poshboytl @yedingding @huacnlee 我喜欢加收藏了

我有个小建议,这个功能虽然漂亮,但用户不一定都买帐。

我本人作为一个程序员,有时候也很难体会用户细腻的小心思,心想这么贴心的功能我都实现了,多帅!

有人却说,我就想知道那个人什么时候回的帖子,如果半夜二点还不睡觉,明天我就关心关心他,结果一看是 8 个小时前,或一天前,这些信息要么我还要算一下,要么对我根本没有用。

我想想也有道理,能不能把时间做成一个锚点链接,默认是几分钟前,几天前,但如果点击一下可以显示年月日,时分秒,这样可能更帅!

#20 楼 @Peter 这个我推荐这么实现。你把年月日时分秒的时间放在 title 里面,这样用户 hover 的时候就会看到的。

@yedingding ruby-china 的时间在 hover 的时候也可以看,我才知道,不过这样已经很好了。

#21 楼 @yedingding 这个是最佳实现了。

#24 楼 @ashchan 非常感谢。回家就立马下载。建议新开帖,这个贴太老了。哈哈。

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