写点什么

一款开源的电商框架介绍:Spartacus

作者:Jerry Wang
  • 2022 年 9 月 04 日
    上海
  • 本文字数:1880 字

    阅读完需:约 6 分钟

一款开源的电商框架介绍: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.

发布于: 刚刚阅读数: 4
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
一款开源的电商框架介绍:Spartacus_typescript_Jerry Wang_InfoQ写作社区