一款开源的电商框架介绍:Spartacus
2015 年的时候,那时笔者已经做了一年多的 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 上的公开课.
Spartacus 4.0 仅支持 Angular 12,但还不支持 v13。 请使用 Angular v12 软件包。这应该可以解决安装时的错误 ng add @spartacus/user: "Must use import to load ES Module..."
未来计划在 Spartacus 5.0 中支持 Angular 13.
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/f1221bd77a06f1444b35f8ab9】。文章转载请联系作者。
评论