SAPUI5:使用格式化程序会影响性能吗?

SAPUI5: Does Using Formatters Impact Performance?

我正在使用 ODataModel 开发自定义 SAPUI5 应用程序,为此我必须对将在列表控件中显示的某些字段进行格式化。

我需要知道下面提到的哪种方法好w.r.t。应用程序的性能。

1) 使用 Formatter.js 文件并为每个字段编写每个格式的方法是个好主意吗?

示例 -

There are 2 fields which should be formatted before showing in UI and hence 2 formatter function.

2) 在将模型绑定到列表之前 - 在每一行使用循环进行格式化。 示例 -

Loop at OData.
--do formatting here for both the fields 
move data to model.
Endloop.
Bind new model to UI

除了代码压缩或使用 grunt 之外,还有其他方法可以提高性能吗?

感谢您的帮助。

谢谢, 拉胡尔

最好的做法是这样做。格式化程序允许您接收输入和 return 输出。格式化程序函数将在运行时调用,并将为列表中显示的每一行调用。为每一行调用它的原因是因为您不能保证列表中所有行的输入都相同。

绑定的概念是在您的数据模型上循环并相应地更新 UI。使用绑定要好得多,因为有很多原因,例如:可维护性、性能、将数据层与表示层分开、核心优化等等。

用其他解决方案替换 Formatters 绝对不是优化性能的起点,更不用说在手动操作 ODataModel 中的数据时,您会失去很多便利。

格式化程序性能

无论如何,使用格式化程序的性能当然不如在数据加载后预先格式化一次。每次重新呈现控件时都会执行格式化程序。因此,您可能不想在频繁执行的格式化程序中进行繁重的计算或过度循环。但是考虑到使用格式化程序的正常使用,您绝对不需要担心,否则会显着影响最终用户体验。继续享受格式化程序带来的便利(看看酷炫的 Expression Binding)。

一般性能注意事项

要提高性能,首先确定真正的瓶颈非常重要。在许多情况下,这只是后端,通常可以事半功倍。永远记住这一点。 UI 只要主后端调用运行 3 秒,代码优化就很荒谬。

提高 UI 表现的方法可能是:

  • CDN
  • 提供 SAPUI5
  • 使用 Component-preload, can be generated with grunt-openui5 or gulp-ui5-preload(我认为它不会缩小 XML,因此您可以在创建组件预加载之前额外执行此操作)
  • 尝试减少您正在使用的 SAPUI5 库的数量
  • 注意您没有使用哪些 SAPUI5 库,并因此删除它们(不要忘记组件元数据中的依赖项部分。manifest.json)
  • 请注意sap.ui.layout是一个单独的独立库(不这样注册会导致很多额外的请求)
  • 如果您使用 ODataModel,请确保将 useBatch 设置为 truev2.ODataModel 中的默认设置)
  • 智能地设计您的 OData 服务(如果您可以影响它)
  • 巧妙地使用 $expands:有时将 $expand 数据预加载到实际上并不使用它的父绑定上是有意义的,例如如果您以后很可能需要这些数据
  • 考虑将您的应用程序捆绑为本机应用程序并从改进的缓存中受益 (Kapsel)
  • 勾选Performance: Speed Up Your App and Performance Issues
  • 挤出更多字节并通过minifying/combining自定义css或其他资源保存一些请求

如果您通常对 Web 性能感兴趣,我可以推荐 Steve Souders 书籍。

我完全愿意接受有关 SAPUI5 性能改进的更多想法!有人吗?

BR 克里斯