今年由于疫情原因,SAP一年一度的DKOM(Developer Kick-Off Meeting)切换成了线上模式,刚刚于昨天圆满落幕。
时间过得真快,去年的DKOM仿佛还历历在目:SAP成都研究院数字创新空间小伙伴们在2020 SAP上海DKOM.
但是Jerry昨天没有太多时间去在线观看,只因为… 我们团队昨天收到了一个优先级为VERY HIGH的客户incident:
这个incident是客户在使用SAP Spartacus并试图启用其服务器端渲染模式(Server Side Rendering,简称SSR)时,遇到了问题,因此我有机会回顾之前使用过的SAP UI开发技术里,关于客户端渲染(Client Side Rendering,简称CSR)和服务器端渲染的知识点。
回顾目录SAP ABAP Webdynpro - 服务器端渲染
SAP BSP / WebClient UI - 服务器端渲染
SAP UI5 - 客户端渲染
SAP Commerce Cloud Accelerator UI - 服务器端渲染
Jerry手头正在处理的incident - SAP * Spartacus Angular UI - 客户端渲染 & 服务器端渲染
Jerry 2018年曾经写过一篇文章,SAP UI和Salesforce UI开发漫谈 ,对我曾经工作过的SAP产品里,所使用过的UI开发技术做了泛泛的介绍。
而本文,则是对这些UI技术采用的页面渲染方式做一个简单的总结。
客户端渲染 VS 服务器端渲染
这组概念的比较,在网上有众多文章介绍。
客户端渲染,即客户端发起HTML网页请求时,服务器不做任何处理,直接返回静态的HTML文件。客户端收到后,执行JavaScript,生成DOM,插入HTML页面,完成最终页面的绘制。
客户端渲染模式里,视图源代码生成,页面路由,以及应用的业务逻辑,全部放在客户端实现和运行执。服务器只负责HTML页面的持久化存储,因此客户端渲染应用又称为胖客户端应用(Rich Client Application).
而服务器端渲染模式里,视图源代码生成,页面路由,以及应用的业务逻辑均在服务器端完成,客户端只负责接收到服务器端渲染好的HTML源代码并解析。
两种渲染方式各有优缺点,及其应用场合。
SAP ABAP Webdynpro - 服务器端渲染
应用开发人员以所见即所得的方式开发ABAP Webdynpro的视图,其源代码存储于ABAP系统的数据库表里。ABAP Webdynpro的视图同用户的交互通过Action和Event完成,交互逻辑由ABAP实现,在ABAP服务器端执行。
比如我开发了一个ABAP Webdynpro UI,在Input字段里输入一个数字:
点击Create按钮之后,能够动态生成对应数量的Label和Text View控件:
而这些UI的动态绘制,是通过服务器端的ABAP编程语言,实现在Create按钮的事件处理函数里的。点击Create按钮,运行在服务器端的ABAP代码即触发,动态创建新的UI控件实例。