单页面应用程序(通过网络传输JSON)是在单个网页上运行的应用程序。在加载一个HTML页面和一些JavaScript后,它们依靠Ajax(“异步JavaScript和XML”)请求在服务器和客户端之间传递JSON数据对象,通过JavaScript和文档对象模型(DOM)API来更新HTML页面,而无需重新加载整个页面。
在超媒体驱动应用程序 (HDA) 中,浏览器仅限于显示 HTML、处理 JavaScript 和 CSS,但不了解应用程序的状态(即之前发生了什么以及接下来会发生什么)。 应用程序的逻辑完全在服务器上维护。 相比之下,在单页应用程序 (SPA) 中,所有路由和潜在操作都是预先定义并在前端实现的。 因此,对应用程序的任何修改都需要重建前端应用程序。
在 HDA 中,关注点分离的想法并不是高度优先的。 CSS、JavaScript 和 HTML 没有完全分离,后端不仅负责数据,还负责生成 UI 和程序流程。 然而,这种方法的优点是我们可以在一个地方维护和自定义所有内容,就像我们过去习惯的那样,例如在以前的 SAP GUI 应用程序中。
最后,将所有这些概念结合在一起,我们相信,开发出复杂性要低得多的应用程序是可能的,但与 SPA 相比,UI 保真度仅略低一些。 或者,当我们尝试直观地说明它时,HDA 应用的设计目标是,找到 MPA 和 SPA 之间的“最佳平衡点”:
UI5 与 htmx 和 unpoly 等框架有很大不同。 在 UI5 应用程序中,所有逻辑都在前端处理,而后端则利用 OData 实现。 这意味着ABAP仅用于传递数据,没有机会实现自己的逻辑或UI。