WCM use class 可以在任何可以使用 sling models.Which 的地方使用,为什么?

WCM use class can be used wherever we can use sling models.Which one should be preferred and why?

如果可以选择使用 Sling 模型或 WCM,请使用 class 何时以及为什么应该首选哪一个?

他们中的任何一个在性能方面都更好吗?

提前致谢

Sling 模型为您节省了大量访问简单对象的时间,如当前 page/resource、注入一些属性或服务、从资源或 Sling http 请求适应您的模型。当然,使用普通 API 你的代码会执行得更快一点,因为你只初始化你真正需要的对象,但你必须做所有这些事情 "manually"。我认为这个sightly introduction is giving a good overview of all possible implementation you can go with. You can also have a look at the sightly official documentation。您可以在下面找到您可以期待的内容的快速概述,并希望能使您的决定更容易(引自官方 sightly 文档)。

Java 使用提供商

优势 通过捆绑包提供的使用对象:

  • 对于类似代码,初始化和执行速度比 Sling 模型更快
  • 易于从其他类似的 Use-objects 扩展
  • 单元测试的简单设置

使用资源支持的对象:

  • 对于类似代码,初始化和执行速度比 Sling 模型更快
  • 易于通过搜索路径从继承组件覆盖 覆盖或使用 sling:resourceSuperType 属性,允许 获得更大的灵活性
  • 组件的业务逻辑位于 Sightly 脚本旁边,其中 使用对象

缺点 通过捆绑包提供的使用对象:

  • 在组件叠加方面缺乏灵活性

使用资源支持的对象:

  • 无法扩展其他 Java 对象
  • Java 项目可能需要不同的设置以允许 运行 单元 测试,因为对象将像 content
  • 一样部署

吊索模型使用提供者

优势

  • 数据检索方便的注入注解
  • 易于从其他吊带模型扩展
  • 单元测试的简单设置

缺点

  • 在组件叠加方面缺乏灵活性,依赖 service.ranking 配置

如果你问我,我总是会把一个框架作为 sling models 或 slice 来使开发更容易和更快。最后,使用框架对性能的影响并不是真正的问题,不会是项目中唯一的第三方框架。但是,如果您的项目是以性能为导向的,那么您可能可以对所有可能性进行一些测试,并确定这样的框架是否适合您的需求(或者只是将两者混合)。