昨天发布了一个开源库 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 项目使用。
#1 楼 @huacnlee timeago 是每 60 秒更新一下时间,同时,必须作用于整个页面,比如对于 Ruby China 而言,comments 列表和文章内容本身的相对时间必须同时更新。
smart-time-ago 做了两点修改,一是这个时间间隔是根据当前的最新时间来算的,而不是固定的 60 秒,这样就避免了不必要的抢占 CPU 资源。第二个是可以分开处理,对于 comments 列表可能会勤更新时间,而文章内容本身就没什么必要了。Ruby China 或许不是个很好的例子,对于Pragmatic.ly这样的实时应用来说就能体验出差别了。
#6 楼 @fsword 只有时间要更新啊,还是拿Pragmatic.ly为例子,一个是 notifications feeds, 内容是不会变得,但是时间会变,1 minute ago, 15 minutes ago, 1 hour ago. 另一个场景是 comments, 内容也是不对变的。时间会变。
#8 楼 @poshboytl 哦,明白了 timago 在 15 分钟一下的时候,60 秒更新一次是有意义的,但是当时间再大些的时候(一天前,一年前,一个月前)这些就没必要更新了
#9 楼 @yedingding 恩,我想了一下,对于那些不会变化的消息性质的内容,这个是最佳使用场景,timeline 上的东西都是不能改变的,所以也非常适合
#15 楼 @HungYuHei 嗯。换一个库就可以了。只是现在不支持 I18N, 如果你没这方面的需求的话可以直接换。另外,看你的应用场景,我比较喜欢包在 container 上,而不是 time tag 本身。
发布了新版本,做了不少性能上的改进。去掉了很多浮点数的比较... 欢迎大家帮忙 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 个小时前,或一天前,这些信息要么我还要算一下,要么对我根本没有用。
我想想也有道理,能不能把时间做成一个锚点链接,默认是几分钟前,几天前,但如果点击一下可以显示年月日,时分秒,这样可能更帅!
#13 楼 @huacnlee gem is on its way. https://github.com/ashchan/timeago-rails