SAP Spartacus简介
终于写到Jerry目前正在做的开发任务了。
2015年的时候,那时Jerry已经做了一年多的SAP UI5开发,想进一步精进自己的开发技能,就申请了一个位于德国Walldorf总部的UI5 Extensibility开发的Fellowship Program,为期6个月。Jerry发了简历给接收Fellowship的团队老板,很快收到回复,团队老板对我的简历很感兴趣,但是表示这个Program没有Relocation Budget,如果我过去,在Walldorf的住宿得我自己掏钱解决。因为这不是商务出差,因此也不会有专门的同事帮我在当地租房。想到这一系列的麻烦,最后我只能放弃。
没想到五年之后,我再次获得了另一个纯前端的开发机会,SAP Spartacus.
什么是Spartacus?Spartacus是SAP Commerce Cloud的Storefront(电商铺面)应用,基于Angular开发而成。
借助SPA(Single-Page-Application)和PWA(Progressive-Web-Application)特性的支持,Spartacus能够提供近似原生应用的用户体验,同时具备高度的可配置性和可扩展性。
先看看Spartacus长什么样。对于国内习惯了网购的朋友来说,无需任何培训就能毫无困难地使用Spartacus进行购物下单,这些操作流程我们已经熟悉得不能再熟悉了。
浏览商品,添加到购物车,支付。
可能大家会觉得上面截图的界面比较朴素,不够美观?前面已经提到,Spartacus具有高度的可配置型和可扩展性,SAP客户可以基于Spartacus开发出具有自己独一无二风格的Storefront应用。
一个成功案例就是,乐高的在线销售Storefront.
Spartacus最显著的两个特点:
- 开源(https://github.com/SAP/spartacus)
- 以库文件的形式发布
也就是说,客户只需要新建一个Angular应用,在package.json里添加对SAP Spartacus库文件的依赖,就可以使用上图所示的Spartacus Core和UI Component,开发满足自己实际需求的Storefront了。
下图就是Angular应用中的package.json文件中导入Spartacus的四个依赖库文件的方式:
客户采用这种方式开发而成的Storefront应用,其自开发代码(下图淡黄色矩形框所示)是升级安全的,即自开发代码不会因为Spartacus库文件的版本升级而被覆盖掉。
Spartacus是一个仍在持续开发的项目,目前最新的版本是3.0. 通常情况下,每隔6个月会进行Major版本的更新,比如从2.0到3.0. 每隔6周,会进行Minor版本的更新,比如从2.0到2.1.
对SAP Commerce Cloud有所了解的朋友们都知道,Hybris以前还有一个基于JSP的Accelerator,也能提供浏览店铺商品,加入购物车,结帐支付的功能,那么为什么SAP仍然会启动Spartacus的开发,并在2019年7月正式发布了1.0版本呢?
我的同事张健(Zhang Jonathan)在他的文章 从产品展示页面谈谈Hybris的特有概念和设计结构 里给大家介绍过,Commerce Cloud的前身Hybris是一个monolithic(单体)应用,其中Storefront即Accelerator实现的技术栈是JSP + Java,没有前后端分离的概念。
Accelerator虽然如张健文章里介绍的那样,具有高度可扩展性,但是也存在一些问题:
因为monolithic(单体)应用的特性,Accelerator本身也是Commerce平台的一部分,通过Java调用经Facade Layer作为入口,消费Service Layer的服务:
如下图高亮代码所示:
因此,Accelerator和Commerce平台无法分别进行升级。
另外,SAP官网明确指出,因为SAP以源代码的方式发布Accelerator,作为实施的模板,因此一旦客户开始了Storefront的定制化工作,修改了这些模板的源代码后,就无法再导入针对当前工作版本的Accelerator的bug fix. 这个道理同ABAP Netweaver里面,如果开发人员直接修改了标准代码后,打不了SAP note是一样的。
这也就是SAP官网上称Accelerator为"Extendable but not Upgradable"的原因。
Commerce Accelerator的这些不足,通过2019年诞生的Spartacus Storefront得到了弥补:
100% API-Driven
Spartacus和Commerce后台的所有交互均通过API完成,Commerce API endpoint通过环境变量SPARTACUS_BASE_URL注入Spartacus,如下图所示:
Focused Development
使用Spartacus,SAP Commerce Storefront开发人员只需要专注于Angular开发。前后端分离之后,Storefront的开发,不再需要Accelerator时代的全栈开发模式。
Continious Delivery
以周为单位的patch发布频率,使得持续交付成为可能。同时,客户通过导入Spartacus库文件的方式进行Storefront的二次开发,其定制化代码和Spartacus库文件是独立的实体,可以分别进行升级;Spartacus和SAP Commerce可以分别进行部署,亦可进行各自的升级。
更多关于SAP Spartacus的介绍,请参考openSAP上的公开课.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
更多阅读
从产品展示页面谈谈Hybris的特有概念和设计结构
从产品展示页面谈谈Hybris系列之二: DTO, Converter和Populator
从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
SAP Spartacus简介相关推荐
- 《走进SAP(第2版)》——2.5 SAP NetWeaver简介
本节书摘来自异步社区<走进SAP(第2版)>一书中的第2章,第2.5节,作者: [德]Nancy Muir , Ian Kimbell , 等 更多章节内容可以访问云栖社区"异步 ...
- 【FI】SAP ODN简介
SAP ODN简介 在我国,根据凭证装订的需要(通常按月分成"收"."付"."转"类型),财务记账凭证通常都是按月顺序编号的(即每个月都是从 ...
- SAP Spartacus 4.0 版本因为 hamburger 依赖导致构建出错的问题
build from Schematics 遇到错误消息: SassError: Undefined function. https://github.com/SAP/spartacus/issues ...
- SAP Spartacus UI 服务器端渲染的调试启动方式 - debug 模式
首先确认你已经熟悉这篇文章的启动方式:SAP Spartacus develop branch 的服务器端渲染启动方式. 第一步 添加一个新的 build script,把 --configurati ...
- SAP Spartacus Session affinity
参见这个讨论. 后端运行在多个 pods/节点时,当子序列请求过早进入时,后端将无法跨集群发送缓存失效请求.此外,如果多个请求分散在多个节点上,则会消耗延迟和不必要的资源. 对于单个客户端,Spart ...
- SAP Spartacus 4.0 的技术变化
在您迁移到 4.0 版库之前,我们强烈建议您切换到新的应用程序结构和新的功能库. 在多个小步骤中进行迁移更容易(迁移到新的应用程序结构,切换到提取的功能库,然后迁移到 4.0),您可以确保在每一步之后 ...
- SAP Spartacus travis ci-scripts 下面 e2e-cypress.sh 的实现分析
文件地址:https://github.com/SAP/spartacus/blob/develop/.travis.yml 里面引用到了 e2e-cypress.sh: https://github ...
- SAP Spartacus 里的 .release-it.json 文件
在 SAP Spartacus package.json 里有一个依赖叫做 release-it: 这个工具的链接:https://github.com/release-it/release-it 这 ...
- SAP Spartacus PageLayoutComponent 如何知道自己应该显示哪些具体内容
我们以前介绍过,经过 SAP Spartacus 路由配置后的 routes 数组,其 route 数据结构的 Component 属性,清一色指向 generic 的 PageLayoutCompo ...
最新文章
- 收藏 | CNN的一些可视化方法!
- CCF-CSP 201703-1 试题名称:	分蛋糕
- ECMAScript 6 未来前景
- 实现运动轨迹_【自动驾驶】运动规划丨速度规划丨时间维度
- 如何构建具有实时搜索功能的React Native FlatList
- arm+linux+entry.s,linux kernel 之底层中断机制entry_armv.S
- Webpack 中 css import 使用 alias 相对路径
- code1068 乌龟棋
- html%3ca%3e标签改字体颜色,HTML URL Encoding 参考
- QQ免费企业邮箱申请配置
- 刚刚,联通和华为发布《5G车路协同白皮书》| 附下载
- https网站地图生成工具
- oracle的insert写法,Oracle中Insert语句的总结
- BUUCTF VoIP
- 微信转账记录删除了服务器还有吗,微信转账记录能彻底删除吗?你应该知道的删除技巧是这三种!...
- oracle参数open_cursors和session_cached_cursor详解
- 常见的分布式文件系统介绍
- 为什么要禁止除GET和POST之外的HTTP方法?
- 点云补全综述 Comprehensive Review of Deep Learning-Based 3D Point Clouds Completion Processing and Analys
- 看图猜成语小程序源码
热门文章
- 详细解读神经网络十大误解,再也不会弄错它的事情原理
- Java的Scanner类的next与nextLine用法区别
- 织梦DEDECMS网站批量删除未审核稿件的方法
- linux ccenteros 部署 redis
- sodu 命令场景分析
- 20145202马超《信息安全系统设计基础》实验四总结
- Oracle之不可见索引
- Handler详解系列(四)——利用Handler在主线程与子线程之间互发消息,handler详解...
- java-commons-HttpClient超时设置setConnectionTimeout和setSoTimeout
- 数据量大和高并发解决方法