【问题标题】:Knockout.js performance - how many observables?Knockout.js 性能 - 有多少 observables?
【发布时间】:2013-12-16 08:09:52
【问题描述】:

我是 Knockout.js 的新手,已经非常喜欢它。

假设我正在实施网络博客,并希望使用 Knockout.js 添加/编辑/删除博客帖子 cmets。为此,我用主题、文本和标签定义了 Comment 视图模型(在我的实际应用程序中,我需要更多字段,例如 10 到 20)。

在用户编辑消息并发布到服务器后,我想在屏幕上使用最新值(包括来自服务器的值 - 例如时间戳)刷新它。看来我需要为每个列出的字段提供可观察的(不仅仅是简单的)属性,否则回发后这些值将不会在用户屏幕上刷新。

现在,如果我每条评论有 20 个 observables 并且有 50 个? 100? cmets 在屏幕上,那么它会减慢浏览器的速度吗?移动设备呢?如果是这样,还有其他方法可以实现我想要的吗?

另一个可能的选项是仅将视图模型用于正在编辑的评论。在这种情况下,我需要以某种方式从 html 元素中“取消绑定”其他视图模型 - 例如,删除它并再次渲染。但是在这里我看不到一个好的解决方案。

【问题讨论】:

  • 找到这样一个答案的最好方法是编写一个原型并尝试一下。
  • 是的,这个简单的想法是在凌晨 3 点 42 分才想到的 :) 我会这样做。但其他人的经历也很有趣。

标签: javascript asp.net asp.net-mvc knockout.js


【解决方案1】:

有趣的问题。

简短的回答是否定的。

浏览器性能并不是真正的问题,除非您专门开发已知或预期会影响性能的应用程序。

浏览器经过精心设计,可以处理大量数据。无论是从服务器下载新数据还是渲染 DOM 元素。我想说一个浏览器可以处理超过 1000 个 cmets(有根据的猜测)。

看看 Google 应用程序(例如日历) - 它们往往会处理大量数据。

【讨论】:

    【解决方案2】:

    这个用例场景听起来很适合mapping plugin

    // Every time data is received from the server:
    ko.mapping.fromJS(data, viewModel);
    

    如果您遇到性能问题,the Viewmodel plugin 声称专门用于从更新的模型更新视图模型的任务要快几倍。

    ko.viewmodel.updateFromModel(viewmodel, updatedModel);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2016-02-04
      • 2016-01-24
      • 2013-01-07
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多