社交组件框架

社交组件框架(SCF)简化了在服务器端和客户端上配置、自定义和扩展社区组件的过程。

该框架的好处:

  • 功能:开箱即用的集成,80%的用例很少或没有自定义。
  • 可设置外观:对CSS样式使用HTML属性时保持一致。
  • 可扩展:组件实施是面向对象的,并且轻松利用业务逻辑 — 易于在服务器上添加增量业务登录。
  • 灵活:易于覆盖和自定义的简单无逻辑Javascript模板。
  • 可访问:HTTP API支持从任何客户端(包括移动设备应用程序)发布内容。
  • 便携:集成/嵌入任何基于任何技术构建的网页。

使用交互式社区组件指南浏览创作或发布实例。

概述

在SCF中,组件由SocialComponent POJO、Handlebars JS模板(用于渲染组件)和CSS(用于设置组件样式)组成。

Handlebars JS模板可以扩展模型/视图JS组件,以处理用户与客户端上组件的交互。

如果组件需要支持数据的修改,则可以编写SocialComponent API的实现以支持编辑/保存与传统Web应用程序中的模型/数据对象类似的数据。 此外,可以添加操作(控制器)和操作服务以处理操作请求、执行业务逻辑以及在模型/数据对象上调用API。

SocialComponent API可以扩展,以提供客户端为视图层或HTTP客户端所需的数据。

如何为客户端呈现页面

scf-page-rendering

组件自定义和扩展

要自定义或扩展组件,您只需将叠加和扩展写入/apps目录,这简化了升级到未来版本的过程。

  • 对于外观:
  • 外观:
    • 更改JS模板和CSS。
  • 外观和UX:
  • 要修改JS模板或GET端点的可用信息,请执行以下操作:
  • 要在操作期间添加自定义处理,请执行以下操作:
  • 要添加新的自定义操作,请执行以下操作:

服务器端框架

该框架提供了用于访问服务器上功能的API,并支持客户端与服务器之间的交互。

Java API

Java API提供易于继承或子类化的抽象类和接口。

服务器端自定义页面中介绍了主类。

请访问存储资源提供程序概述以了解如何使用UGC。

HTTP API

HTTP API支持轻松自定义和选择PhoneGap应用程序、本机应用程序以及其他集成和混合的客户端平台。 此外,HTTP API允许社区站点在没有客户端的情况下作为服务运行,这样框架组件就可以集成到基于任何技术构建的任何网页中。

HTTP API -GET请求

对于每个SocialComponent,框架都提供基于HTTP的API端点。 通过使用“.social.json”选择器+扩展向资源发送GET请求来访问端点。 使用Sling,将请求传递到DefaultSocialGetServlet

DefaultSocialGetServlet

  1. 将资源(resourceType)传递到SocialComponentFactoryManager,并接收能够选择表示资源的SocialComponent的SocialComponentFactory。

  2. 调用工厂并接收能够处理资源和请求的SocialComponent

  3. 调用SocialComponent,该函数处理请求并返回结果的JSON表示形式。

  4. 将JSON响应返回给客户端。

GET Request

默认GETServlet侦听.social.json请求,SocialComponent将使用可自定义的JSON对其做出响应。

scf-framework

HTTP API -POST请求

除了GET(读取)操作之外,该框架还定义了端点模式,以对组件启用其他操作,包括创建、更新和删除。 这些端点是接受输入并以HTTP状态代码或JSON响应对象进行响应的HTTP API。

该框架端点模式使CUD操作具有可扩展性、可重用性和可测试性。

POST Request

每个SocialComponent操作都有一个SlingPOST:操作。 每个操作的业务逻辑和维护代码都封装在OperationService中,该OperationService可通过HTTP API访问,或从其他位置作为OSGi服务访问。 提供了支持在操作之前/之后可插拔操作扩展的挂钩。

scf-post-request

存储资源提供程序(SRP)

要了解如何处理存储在社区内容存储中的UGC,请参阅:

服务器端自定义

访问服务器端自定义 ,以了解有关自定义服务器端社区组件的业务逻辑和行为的信息。

Handlebars JS模板语言

在新框架中,一个更显着的变化是使用Handlebars JS(HBS)模板语言,该语言是一种用于服务器客户端渲染的常用开源技术。

HBS脚本简单、无逻辑、可在服务器和客户端上编译、易于覆盖和自定义,并且与客户端UX自然绑定,因为HBS支持客户端渲染。

该框架提供了几个Handlebars帮助程序,在开发SocialComponents时非常有用。

在服务器上,当Sling解析GET请求时,它会标识将用于响应请求的脚本。 如果脚本是HBS模板(.hbs),Sling会将请求委派给Handlebars引擎。 然后,Handlebars引擎将从相应的SocialComponentFactory中获取SocialComponent,构建上下文并渲染HTML。

无访问限制

Handlebars(HBS)模板文件(.hbs)类似于.jsp和.html模板文件,不同之处在于它们可用于在客户端浏览器和服务器上渲染。 因此,请求客户端模板的客户端浏览器将从服务器接收.hbs文件。

这要求任何用户都可以从创作或发布中获取Sling搜索路径中的所有HBS模板(/libs/或/apps下的任何.hbs文件)。

不得禁止对.hbs文件的HTTP访问。

添加或包含社区组件

大多数社区组件必须​添加​作为Sling可寻址资源。 在模板中,可以选择一些社区组件作为非现有资源​包含,以允许动态包含和自定义用户生成内容(UGC)的写入位置。

无论哪种情况,组件的所需客户端库都必须存在。

添加组件

添加组件是指添加资源(组件)实例的过程,例如在创作编辑模式下从组件浏览器(Sidekick)拖动到页面上的过程。

结果会在par节点下方生成一个JCR子节点,该节点是Sling可寻址的。

包含组件

包括组件是指在模板中添加对"非现有"资源(无JCR节点)的引用的过程,例如使用脚本语言。

自AEM 6.1起,如果组件是动态包含的而不是添加的,则可以在创作设计模式中编辑组件的属性。

只能动态包含一些选定的AEM Communities组件。 它们是:

社区组件指南允许将可包含的组件从添加切换为包含。

使用Handlebarstemplating 语言时,将使用include helper通过指定其resourceType来 括非现有资源:

{{include this.id path="comments" resourceType="social/commons/components/hbs/comments"}}

使用JSP​时,将使用标记cq:include 🔗包含资源:

<cq:include path="votes"
 resourceType="social/tally/components/voting" />
注意

要动态地向页面添加组件,而不是在模板中添加或包含组件,请参阅组件侧加载

Handlebars Helpers

请参阅SCF Handlebars Helpers ,以获取SCF中提供的自定义帮助器的列表和说明。

客户端框架

模型视图Javascript框架

该框架包含Backbone.js的扩展,后者是一个模型视图的JavaScript框架,旨在促进开发丰富的交互式组件。 面向对象的性质支持可扩展/可重用框架。 通过HTTP API简化了客户端与服务器之间的通信。

该框架利用服务器端Handlebars模板来为客户端渲染组件。 这些模型基于由HTTP API生成的JSON响应。 视图将自身绑定到由Handlebars模板生成的HTML,并提供交互性。

CSS惯例

以下是定义和使用CSS类的推荐约定:

  • 使用明确命名的CSS类选择器名称,并避免使用通用名称,如“标题”、“图像”等。
  • 定义特定的类选择器样式,以便CSS样式表能够很好地与页面上的其他元素和样式一起使用。 例如:.social-forum .topic-list .li { color: blue; }
  • 对于由JavaScript驱动的UX,请将样式的CSS类与CSS类分开。

客户端自定义

要自定义客户端上社区组件的外观和行为,请引用客户端自定义,其中包含有关以下内容的信息:

功能和组件要点

功能和组件要点部分中介绍了开发人员的基本信息。

可在编码准则部分找到其他开发人员信息。

疑难解答

疑难解答部分介绍了常见问题和已知问题。

在此页面上