Show Menu
主题×

组件准则

核心 开发核心组件 组件遵循与基础组件截然不同的现代实施模式。
本页介绍这些模式,以及何时使用这些模式构建您自己的可创作组件。 第一部分“ 常规组件模式 组件准则 ”适用于任何类型的组件,而第二部分“可重用组件模式”则适用于计划跨站点或项目重用的组件,例如核心组件。

常规组件模式

本节中的准则建议用于任何类型的组件,无论该组件是否特定于单个项目,或该组件是否打算在各站点或项目之间广泛重复使用。

可配置组件

组件可以具有包含各种选项的对话框。 这应该被用于使组件变得灵活且可配置,并避免实施多个组件,这些组件大多是彼此不同的组件。
通常,如果线框或设计包含类似元素的变体,则这些变体不应作为不同的组件实现,而应作为一个具有在变体之间进行选择的选项的组件实现。
要更进一步,如果组件在站点或项目之间重复使用,请参阅预 配置功能部分

关注事项分离

通常,将组件的逻辑(或模型)与标记模板(或视图)分开是一个好做法。 要实现此目的,有多种方法,但建议使用 Sling Models (逻辑模型)和 overview.html HTML模板语言(HTL)(核心组件也是如此)。
Sling Models是一组Java注释,可以从POJO中轻松访问所需的变量,因此为组件实现Java逻辑提供了一种简单、强大而高效的方法。
HTL设计为一种安全、简单的模板语言,专为AEM量身定制。 它可以调用多种形式的逻辑,这使得它非常灵活。

可重用的组件模式

本节中的准则也可用于任何类型的组件,但对于打算跨站点或项目重复使用的组件(例如,核心组件),它们最有意义。 因此,对于仅用于单个站点或项目的组件,可忽略这些准则。

预配置功能

除了页面作者使用的编辑对话框外,组件还可以有一个设计对话框,供模板作者预配置它们。 模 板编辑器 允许设置所有这些预配置,这些预配置称为“策略”。
为使组件尽可能地可重用,应为它们提供有意义的预配置选项。 这将允许或禁用组件的功能以匹配不同站点的特定需求。

代理组件模式

由于每个内容资源都有一个引用组件以呈现它的属性,因此通常最好将这些属性指向特定于站点的组件,而不是指向由多个站点共享的组件。
sling:resourceType
如果一个站点需要某个组件的不同行为,这将提供更大的灵活性并避免内容重构,因为随后可以在特定于站点的组件上实现此自定义,而不会影响其他站点。
但是,对于不复制任何代码的项目特定组件,它们应分别引用具有属性的共享父组
sling:resourceSuperType
件。 这些主要只引用父组件的项目特定组件称为“代理组件”。 如果代理组件完全继承了该功能,则它们可以是完全空的,也可以重新定义组件的某些方面。

组件版本控制

随着时间的推移,组件应保持完全兼容,但有时无法保持兼容的更改是必要的。 解决这些对立需求的一个解决方案是通过在其资源类型路径和实现的完全限定的Java类名称中添加数字来引入组件版本控制。 此版本号表示由语义版本控制准则定义的主 要版本 ,该版本仅对不向后兼容的更改递增。
对组件的以下方面进行不兼容的更改将导致组件的新版本:
  • Sling模型(遵循语义版本控制准则)
  • HTL脚本和模板
  • HTML标记和CSS选择器
  • JSON表示
  • 对话框
有关更多详细信息,请参 阅GitHub中的“版本控制策略 ”文档。
组件版本控制创建了一种对升级很重要的合同形式,因为它阐明了何时可能需要重新分析某些内容。 另请参阅自定义 的升级兼容性部分 ,其中介绍了不同形式的自定义升级需要考虑哪些事项。
为避免痛苦的内容迁移,永远不要直接指向内容资源中的版本化组件非常重要。 根据经验,某个内
sling:resourceType
容永远不得包含版本号,或升级组件也需要重新构造内容。 避免这种情况的最佳方法是遵循上述 代理组件模式

模型接口

此模式与HTL指向Java接口的指
data-sly-use
令有关,而Sling Model实现也将自身注册到组件的资源类型。
与上述代理组 件模式结合使用 ,这种双绑定形式提供了以下不错的扩展点:
  1. 站点可以通过将Sling模型注册到代理组件的资源类型来重新定义其实现,而无需考虑HTL文件,该文件仍可指向接口。
  2. 站点可以重新定义组件的HTL标记,而不必考虑它应该指向哪个实现逻辑。

整合

以下是整个资源类型绑定结构的概述,以标题核心组件为例。 它说明了站点特定的代理组件如何允许解析组件版本控制,以避免内容资源包含任何版本号。 然后,它显示组件的
title.html
HTL文件如何用于模型接口,而实现则通过 Sling Model models.html annotations绑定到组件的特定版本。
下面是另一个概述,它不显示实施POJO的详细信息,但显示关联的模板和策 略的引用
该属
cq:allowedTemplates
性告诉哪些模板可用于站点,以及每个页
cq:template
面的相关模板信息。 每个模板由以下三部分组成:
  • structure
    —— 包含将强制显示每个页面的资源,以及页面作者无法删除的资源,例如页眉和页脚组件。
  • initial
    —— 包含创建页面时将复制到该页面的初始内容。
  • 策略
    -包含每个组件的策略映射,该策略是组件的预配置。 此映射允许策略在模板之间重复使用,因此可以集中管理。