当前位置 : 主页 > 网络安全 > 测试自动化 >

Aurelia – 提升repeat.for视图渲染的性能

来源:互联网 收集:自由互联 发布时间:2021-06-22
我有一个所谓的聊天视图,它基本上由一个repeat.for组成,它遍历所有消息并使用 compose呈现消息视图. 问题是,一旦消息计数超过50并且用户在聊天之间导航(这会触发repeat.for更新,因为我替换
我有一个所谓的聊天视图,它基本上由一个repeat.for组成,它遍历所有消息并使用< compose>呈现消息视图.

问题是,一旦消息计数超过50并且用户在聊天之间导航(这会触发repeat.for更新,因为我替换VM中的数据集),它变得非常慢.

在处理这样的视图方面,我觉得我做错了.我能否就其他替代品获得一些意见?

我尝试过UI虚拟化,但不幸的是,当前的插件不支持我需要的功能(可变高度项,自底向上对齐).

我还对绑定进行了相当多的优化,大多数是一次性的,对数据集的更新都是去抖动的.但这并没有改善事情,因为主要的瓶颈是初始负载(第一次绑定视图).

谢谢!

当前方法的示例:

<li repeat.for="message of chat.messages">
  <compose  view-model.bind="getMessageViewFromMessage(message) & oneTime"
            model.bind="message & oneTime"
            containerless>
  </compose>
</li>
我认为您需要考虑不使用<撰写>完全是为了这个.你有什么理由需要<撰写>?当你考虑它时,< compose元素必须重新运行相同的视图实例化/绑定逻辑Aurelia为每一件事做的事情,每次显示一条消息. 我个人会创建一个带有一些可绑定属性的HTML部分,并在循环内部引用它.所以你可能有chat-message.html,然后像这样显示:

<li repeat.for="message of messages">
    <chat-message message.bind="message"></chat-message>
</li>

在可能的情况下,在大多数情况下应该避免对潜在的大型重复项目进行动态组合.

网友评论