【问题标题】:How to display dates in my app without excessive load?如何在没有过多负载的情况下在我的应用程序中显示日期?
【发布时间】:2015-02-22 14:50:07
【问题描述】:

在我的应用程序中,我有帖子,在我的帖子页面中,我使用moment 包将发布日期显示为a minute ago

我正在使用以下代码显示日期

Template.registerHelper("postedTime",function(date){
        return moment(date).fromNow();
 });

在我的 HTML 中

{{#with post}}    
.............
............
{{postedTime date}}
............
............
{{/with}}

我知道这些日期不是被动的。在我的帖子中,我有数百个 cmet 也具有相同的日期格式。

在不给客户端浏览器带来太多负载的情况下更新所有这些时间的最佳方法是什么?

【问题讨论】:

    标签: meteor momentjs


    【解决方案1】:

    日期本身不是响应式的,因此您需要在帮助器中包含响应式数据源以强制它重新运行。

    在本例中,我们将更新一个会话变量,该变量将强制 postedTime 的所有实例每 60 秒重新评估一次:

    Template.registerHelper('postedTime', function(date) {
      Session.get('timeToRecompute');
      return moment(date).fromNow();
    });
    
    setInterval(function() {
      Session.set('timeToRecompute' new Date);
    }, 60 * 1000);
    

    【讨论】:

    • 有了这个,无论我在哪里使用postedTime,它们都会每分钟自动更新一次?如果是这样,浏览器的负载(或冻结)是否过多?或者浏览器可以轻松承受这些负载(假设我有 100 个这样的时间戳)?
    • 是的,它们都会自动更新。不应有可察觉的负载。只有一个计时器,所以数百个实例postedTime 应该不是问题。
    猜你喜欢
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多