Knockout.js性能-有多少可观察性

Knockout.js performance - how many observables?

本文关键字:多少 可观察性 js 性能 Knockout      更新时间:2023-09-26

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

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

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

现在,如果我每个评论有20个可观测值,那么有50个?100?屏幕上的评论,那么它会大大降低浏览器的速度吗?移动设备呢?如果是这样的话,还有其他方法可以实现我想要的吗?

另一种可能的选择是只对正在编辑的注释使用视图模型。在这种情况下,我需要以某种方式从html元素中"解除绑定"其他视图模型——例如,删除它并再次渲染。但在这里,我看不到一个好的解决方案。

有趣的问题。

简短而简单的答案是否定的。

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

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

看看谷歌的应用程序(比如日历),它们往往会处理大量的数据。

这个用例场景听起来像是映射插件的完美匹配:

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

如果你遇到性能问题,Viewmodel插件声称速度快了好几倍,专门用于从更新的模型更新视图模型的任务。

ko.viewmodel.updateFromModel(viewmodel, updatedModel);