SPA模型路由

对于AEM中的单页应用程序,由应用程序负责路由选择。 本文档介绍了路由机制、合同和可用选项。

注意

对于需要基于SPA框架的客户端渲染(例如React或Angular)的项目,建议使用SPA编辑器。

项目路由

该应用程序拥有路由,然后由项目前端开发人员实施。 本文档描述特定于AEM服务器返回模型的路由。 页面模型数据结构会公开基础资源的URL。 前端项目可以使用任何自定义或第三方库提供路由功能。 一旦路由需要模型的片段,就会调用 PageModelManager.getData() 功能可以建立。 当模型路由发生更改时,必须触发一个事件来警告侦听库,例如页面编辑器。

架构

欲知详细说明,请参阅 PageModelManager SPA部分。

模型路由器

ModelRouter — 启用时 — 封装HTML5 History API函数 pushStatereplaceState 以确保预先获取和访问给定模型片段。 然后,它通知注册的前端组件模型已被修改。

人工与自动模型工艺路线

ModelRouter 自动获取模型的片段。 但就像任何自动化工具一样,它也有局限性。 需要时 ModelRouter 可以禁用或配置为使用元属性忽略路径(请参阅 SPA页面组件 文档)。 然后,前端开发人员可以通过请求 PageModelManager 以使用加载任何给定的模型片段 getData() 函数。

注意

We.Retail日志 示例React项目说明了自动化方法,而Angular项目说明了手动方法。 半自动化方法也是有效的用例。

注意

当前版本的 ModelRouter 仅支持使用指向Sling模型入口点的实际资源路径的URL。 它不支持使用虚URL或别名。

路由选择合同

当前实施基于以下假设:SPA项目使用HTML5历史记录API路由到不同的应用程序页面。

配置

ModelRouter 支持模型路由的概念,因为它监听 pushStatereplaceState 调用以预取模型片段。 在内部,它会触发 PageModelManager 加载与给定URL对应的模型并触发 cq-pagemodel-route-changed 其他模块可以侦听的事件。

默认情况下,此行为会自动启用。 要禁用它,SPA应呈现以下元属性:

<meta property="cq:pagemodel_router" content="disabled"\>

请注意,SPA的每条路由都应对应于AEM中可访问的资源(例如, ” /content/mysite/mypage"),因为从 PageModelManager 选择路由后,将自动尝试加载相应的页面模型。 不过,如果需要,SPA还可以定义路由的“阻止列表”,该路由应被 PageModelManager

<meta property="cq:pagemodel_route_filters" content="route/not/found,^(.*)(?:exclude/path)(.*)"/>

在此页面上