Javascript “最有效的方法”;推;聚合物元素的数据传输

Javascript “最有效的方法”;推;聚合物元素的数据传输,javascript,websocket,polymer,Javascript,Websocket,Polymer,在这种情况下,我通过web套接字获取数据,性能非常重要。从文档中,我了解到有多种方法可以将我接收到的数据“推送”到我的聚合物元素中,但我很好奇哪种方法最有效。到目前为止,我已经创建了一个可以包含在模板中的元素,其中父元素将观察data属性中的任何更改,并做出相应的反应。我也一直在尝试使用行为来完成同样的事情,尽管它不需要在模板中包含“数据元素”,而只需要观察自己的数据属性。我意识到我也可以使用类似于铁信号的东西来通过事件“推送”数据 我不确定这些方法是否非常有效,因为大多数时候对“数据”对象的更

在这种情况下,我通过web套接字获取数据,性能非常重要。从文档中,我了解到有多种方法可以将我接收到的数据“推送”到我的聚合物元素中,但我很好奇哪种方法最有效。到目前为止,我已经创建了一个可以包含在模板中的元素,其中父元素将观察
data
属性中的任何更改,并做出相应的反应。我也一直在尝试使用行为来完成同样的事情,尽管它不需要在模板中包含
“数据元素”
,而只需要观察自己的数据属性。我意识到我也可以使用类似于
铁信号的东西来通过事件“推送”数据

我不确定这些方法是否非常有效,因为大多数时候对“数据”对象的更改只适用于所有观察者的一小部分。另一种可能的解决方案是“观察”动态路径,如
data.pathx
,而不是
data.*
,这将大大减少引发观测者回调的次数,但我没有遇到任何让我认为这是可能的情况,因为在创建之前,我的每个元素都不知道是否应该观察
pathx
pathz

正如我所说,性能是至关重要的,如果我有一个小型到中型的
dom repeat
元素,每个元素都观察另一个元素的大型
数据对象,或者单独保存该数据的副本(就像我假设的行为可以完成一样),我觉得效率太低了

我已经查看了iron meta,但是我还没有成功地将数据绑定到它,从文档中可以看出,这些数据需要查询,而我需要得到更改通知。

Polymer并没有真正“观察”元素中的更改。它只是为每个属性设置一个setter,当它被调用时,UI会被更新。因此,dom重复模板不会在绑定到它的对象内部观察到任何更改

可能影响性能的是不必要的DOM操作,因此,如果只有一小部分数据发生了更改,那么将所有数组重新分配给属性并不理想,您应该使用notifyPath,而只使用更改的子属性路径和值。Polymer将只更新受影响的DOM节点

如果您有办法知道数据中更改了哪些子属性,那么您可以获取已更改的对象路径,并为每个对象调用notifyPath,并且只更改少量DOM节点

补充说明: 如果数组中的元素数量发生变化,(添加/删除),则应使用基于聚合物的数组操纵方法更新聚合物元素的属性,以便有效地更改DOM。

聚合物实际上不会“观察”元素的变化。它只是为每个属性设置一个setter,当它被调用时,UI会被更新。因此,dom重复模板不会在绑定到它的对象内部观察到任何更改

可能影响性能的是不必要的DOM操作,因此,如果只有一小部分数据发生了更改,那么将所有数组重新分配给属性并不理想,您应该使用notifyPath,而只使用更改的子属性路径和值。Polymer将只更新受影响的DOM节点

如果您有办法知道数据中更改了哪些子属性,那么您可以获取已更改的对象路径,并为每个对象调用notifyPath,并且只更改少量DOM节点

补充说明: 如果数组中的元素数发生更改,(添加/删除),则应使用基于聚合物的数组操纵方法更新聚合物元素的属性,以便有效地更改DOM