【技术种草】介绍一款开源电商网站的购物车添加功能的实现

简介: 【技术种草】介绍一款开源电商网站的购物车添加功能的实现

目前电商领域有两款比较出名的开源电商网站解决方案,分别是基于 Angular 开发框架,代号为 Spartacus 的开源项目,以及基于 Vue 的 Vue Storefront.image.pngimage.png作为 Spartacus 开源项目的开发成员之一,今天我想通过本文,给大家介绍一下我们平时购物时最常使用到的功能之一,添加产品到购物车的技术实现。


即使没有多少 Angular 开发经验的前端程序员,阅读本文之后,也能对 Spartacus 电商网站添加商品到购物车的功能实现,有一个最基础的了解。


我们将 Github 上 Spartacus 代码仓库的代码克隆到本地并运行后,通过 https://localhost:4299 可以访问电商页面的 UI:

image.png可以看到此时右上角红色的购物车图标显示的数字为0,意思是当前用户 Jerry Wang,还没有添加任意的商品到购物车里。

我们随便在店铺上选择一台电子设备,进入商品明细页面,点击 Add To Cart,将其添加到购物车:image.png可以在上图产品明细页面的 url 里,找到其产品编号为 1377492.

点击了 Add To Cart 后,在 Chrome 开发者工具 network 标签页里观察到一个 HTTP POST 请求:image.png上图展示的该 POST 请求的负载里,包含 ID 为 1377492 的产品信息。这个 HTTP POST 请求调用购物车更新的 Restful API , 将客户选中的产品添加到购物车里。


该请求响应字段的 statusCode 为 success,如下图所示,说明 API 调用成功。

image.png添加成功的购物车界面一览:

image.png店铺管理员可以登录电商后台管理页面,根据购物车编号 2357 查到我刚刚添加了商品的购物车:image.png下面介绍 Add To Cart 按钮的前端实现细节。

使用 Chrome 开发者工具,很快就能找到这个按钮所在的 Angular Component 的 selector:cx-add-to-cartimage.png进而找到该 Component 的实现:image.png从上图代码第 21 行可以看出,Add To Cart 按钮本身的显示条件,是这个产品必须有库存。当客户输入的购买个数小于等于 0,或者大于最大库存数时,该按钮会被禁用。


点击该 button 之后,执行什么逻辑呢?第 23 行该 button 元素的类型 type 字段的值为 submit,而这个 button 标签,包裹在一个 form 标签内。


我们到该 Component 对应的模板文件头部查看,发现了 submit 事件的处理函数为 addToCart:

image.png在 addToCart 内部,添加商品到购物车的执行逻辑,投递到了该 Component 注入的服务类,ActiveCartService 的 addEntry 方法。

image.png最终,我们使用 NgRx 状态管理框架,将添加购物车这个动作,抽象成一个名为 CartActions.CartAddEntry 的 Action 类,并通过 NgRx Store 的 dispatch 方法投递。

image.png根据 NgRx 的架构图,这些投递出的 Action,最终会被 Effects 接收,后者会调用 Restful API 同后台服务器通信。

image.pngimage.pngimage.png然而,这个 CartEntryAdapter 本身和其 add 方法,前面都加上了 abstract 关键字,那么具体的实现到底在哪里呢?

在对应的 NgModule 定义里能找到答案:OccCartEntryAdapter 实现了这个 abstract class.image.png最终,我们在 OccCartEntryAdapter 的实现代码里,发现这个类,从配置信息里读取并生成后台对应的购物车更新的 API endpoint,然后使用注入的 HttpClient 的 post 方法(下图第35行代码),根据生成的 endpoint 调用这个 API,最终完成购物车更新操作。


————————————————

版权声明:本文为CSDN博主「汪子熙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/i042416/article/details/121453898image.png

总结

本文通过一个最常用的添加商品到购物车的例子,分析了 Spartacus 这款开源电商店铺应用解决方案前端通过 Restful API 调用的方式同后端交互的原理。

欢迎大家访问 Spartacus 项目的 Github 主页, 试用这个应用,并提出您的宝贵意见。


相关文章
|
9月前
|
安全
拍卖软件开发定制直播竞价商城成品源码优势
在数字化时代,拍卖业务已经由传统的实体拍卖过渡到了在线平台。为了满足日益增长的市场需求,拍卖业务领域面临着两种主要选择:自定义拍卖软件开发和使用“东莞梦幻网络科技”已有拍卖平台的现成源码解决方案。在本文中,我们将深入探讨这两种方法的各自优势,以帮助您更好地了解哪种适合满足您的业务需求。
|
1月前
|
开发者
提升用户黏性:现成体育直播源码开发设计哪些关键功能
面对激烈的市场竞争,如何通过关键功能设计提升用户黏性,使之成为用户长期依赖的首选平台,是每一个开发者必须深思的问题。如下参考“东莞梦幻网络科技”现成体育直播源码,为了吸引更多用户并提高他们的黏性,开发哪些关键功能,帮助实现这一目标:
|
1月前
|
新零售 大数据
全民拼团商城新零售系统开发|模式分析|详情方案
新零售是线上线下的结合,组合的价值主要是线下线上引流
|
1月前
|
新零售 搜索推荐
全民拼团商城系统开发|成熟案例|需求详情
无论未来做什么样的社交+零售模式,都离不开社区。
|
1月前
|
JSON 监控 搜索推荐
探索拼多多API:打造个性化购物体验与互动营销工具
在数字时代的浪潮中,电子商务平台如星辰般璀璨,而拼多多便在其中熠熠生辉。它不仅以创新的团购模式和精准的优惠策略捕获了消费者的心,更以其开放的API接口为技术探索者提供了一片广阔的天地。今天,就让我们一同潜入这片神秘的数据海洋,探索如何通过拼多多API获取商品详情,进而为用户塑造一个充满个性和互动性的购物世界。
|
1月前
|
存储 JSON API
抖音订单接口在电商行业中的重要性及实践应用
随着移动互联网的快速发展,短视频平台抖音已经成为人们日常生活中不可或缺的一部分。越来越多的商家开始利用抖音平台推广和销售商品,从而实现商业变现。在这个过程中,抖音订单接口起到了至关重要的作用。本文将详细探讨抖音订单接口在电商行业中的重要性,并通过实践应用案例和代码示例,帮助读者更好地理解和应用该接口。
|
10月前
体育赛事直播系统源码搭建平台四种用户获利方式
通过“东莞梦幻网络科技”体育直播源码搭建的赛事直播平台,有哪些功能帮助打造出完整的社群环境来吸引许多优质创作者,不仅让创作者能够获利,也让自家平台的素材内容多元且丰富,吸引更多用户和创作者,形成一个良好的正循环。
|
Web App开发 开发框架 前端开发
【技术种草】介绍一款开源电商网站的购物车添加功能的实现
【技术种草】介绍一款开源电商网站的购物车添加功能的实现
【技术种草】介绍一款开源电商网站的购物车添加功能的实现
|
供应链 搜索推荐 算法
淘宝APP产品升级:首页聚焦转化和运营效率「买家秀」社区升级为 「逛逛」
内测版淘宝主要有以下三方面变化,“微淘”升级为“订阅”,和“推荐”并列在首页展示;猜你喜欢进入首页第一屏,首页更加信息流化;最为重要的更改,毫无疑问是将此前淘宝内的买家秀、洋淘、问大家等内容板块聚合在“逛逛”内。
1499 0
淘宝APP产品升级:首页聚焦转化和运营效率「买家秀」社区升级为 「逛逛」