使用 Chrome 开发者工具研究一个基于 Angular 开发的网站源代码

news/2024/5/8 16:50:12/文章来源:https://jerry.blog.csdn.net/article/details/124715756

Chrome 开发者工具是前端开发工程师工具箱里使用频率最高的工具之一。

本文通过一个具体的例子,给大家分享笔者工作中,是如何通过 Chrome 开发者工具,分析一个网站的实现明细。

下图是 SAP Commerce Cloud(电商云) UI 加载默认的 SampleData 数据集后打开的主页,这是一个电子设备的在线购物店面,基于 SAP Spartacus 开源项目构建而成。

下图这个网站,是乐高成功使用 SAP Spartacus 开发并上线的在线购物店面(阿联酋地区):

大家仅凭视觉效果,能分辨出这两个网站,实际上都是基于同一个 UI 框架开发出来的吗?这也再次体现了 SAP Commerce Cloud UI 无头电商,即 Headless Commerce 的架构。前端电商店面,同 SAP Commerce Cloud 后台核心功能完全解耦,二者通过 API 交互。这样,购买了 SAP Commerce Cloud 的客户,使用 Commerce Cloud 提供的 OCC API 和开源的 SAP Spartacus 框架,可以通过二次开发的方式,构建出外观能够体现企业品牌魅力的独一无二的电商店面。

笔者是前端开发人员而不是用户体验工程师,因此没有能力从乐高这个店面外观的设计风格角度给大家分享一些干货,只能从 SAP Commerce Cloud UI 二次开发的层面,给大家介绍该店面背后的一些实现细节。

打开 Chrome 开发者工具,根据 Elements 面板的 app-root 和 cx-storefront 元素,立即能分辨出该店铺界面开发基于 SAP Spartacus(Angular 版本号 8.2.13),而不是传统的 JSP Accelerator.

上图红色区域即 app-root 的子节点内,包含了 cx-storefront 及后代节点。然而我们在 Chrome 开发者工具 network 里观察,发现服务器返回给浏览器的初始页面里,app-root 节点内是空的,这说明当前我这次的访问场景是客户端渲染,即浏览器收到服务器发送的仅仅包含空 app-root 节点的网页,然后浏览器端执行 Angular 框架代码,将完整的页面源代码渲染出来。

而在服务器端渲染场景下,节点 app-root 的内容是在服务器端生成完毕后再返回给浏览器。

对比下图服务器端渲染的场景,浏览器从服务器端接受到的网页源代码里,app-root 节点内的内容已经全部渲染完毕:

两种渲染方式各有优缺点和应用场合。

在 head 节点下面,有一个重要的 meta 元素,用于维护该店铺同 SAP Commerce Cloud 后台交互的明细,name 为 occ-backend-base-url, 值为 API Endpoint.

因此,当我们浏览器里打开乐高购物网站时,Chrome 开发者工具里能观察到发向该 API Endpoint 的一个 HTTP 调用。这个 API 调用向 Commerce Cloud 询问,当前页面 (ID 为 homepage),应该显示哪些内容插槽(Content Slots)和组件(Components).

SAP Commerce Cloud 的内容管理员(Content Management System Administrator)在 Backoffice CMS 控制台里,定义 homepage 应该显示哪些 Content Slots,以及这些 Slots 里应该显示哪些组件。

这些内容信息维护并存储在 SAP Commerce Cloud 后台,通过 API 的方式暴露给 Commerce Cloud 店铺,后者根据这些信息进行 Angular 层面的页面渲染。

下图这个 API 调用的响应,说明乐高的 homepage,也是重用了 SAP Commerce Cloud 大部分标准的内容插槽即 Section1,Section2A,Section2B,Section2C 等等:

只不过从放置到这些标准插槽里的组件名称可以看出,乐高做了定制化开发。这些新的组件,命名加上了 Lego 的前缀。

如果想知道每个内容插槽里到底显示了哪些内容,在 Chrome 开发者工具里查看 cx-page-slot 节点下面的内容即可:

head 区域的其他 meta 元素还包括提供了用于支持搜索引擎优化的元数据信息。比如出现在搜索引擎结果列表里的描述信息,就维护在 meta description 的 content 字段内。

在乐高店铺注册一个帐号并登录后,在 Chrome 开发者工具里查看 Local Storage,发现仍旧采用了 SAP Spartacus 默认的基于 OAuth2 的用户认证和会话管理机制。

在店铺上点击任意一个乐高产品的图片后,进入产品明细页面,抄下该页面的 url:

https://lego.yellowblocks.me/en-ae/product/lego-main-square/60271-LEGO

虽然乐高店铺使用的是构建之后的生产版本,Angular 代码中的类名和变量名在该版本中被混淆化成单一的字母,但是代码中的 JSON 对象名称和字段仍保持不变,因此我们仍然可以从中找到 SAP Spartacus 默认的路由配置。

Chrome 开发者工具里打开 main.js 代码块,里面包含了 Lego Spartacus 项目二次开发项目构建后生成的 JavaScript 代码。根据关键字 routing 搜索源代码,找到 Spartacus 默认的路由配置。

定位到产品明细页面的路由配置:

product/:productCode/:name

其中 product 为静态路径片段,productCode 和 name 相当于占位符,其前面的冒号标识二者为路由参数,运行时会被产品明细页面的产品模型的同名字段填充。

当然本文介绍的只是 SAP Commerce Cloud UI 基于 Spartacus 进行二次开发的冰山一角,希望大家对 SAP 电商云无头电商这种前后端分离的设计思路有一个直观的认识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_706513.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【知云】第十二期:处于风口浪尖上的直播视频网站,如何快速部署直播监管?...

摘要:广电总局要求视频直播网站的视频内容保存两个月以上,针对于这样的要求,视频直播网站有没有简单快捷的部署方式呢?本文中阿里云布道师爅冉将与大家分享阿里云直播监管冷存储解决方案。 想要看视频版?请点击这里&am…

网站上的 breadcrumb 使用场景浅析

下图是 SAP Spartacus 电商云 UI 的 breadcrumb Angular Cloud Portal 的源代码。Component 的 crumbs$ 数据,通过结构化指令 *ngFor 展开,然后通过 span 和 a 标签渲染。 breadcrumb 的 Component 区域仅限于此: “breadcrumb”(…

ASP网站精品源码集合(免积分下载)

2019独角兽企业重金招聘Python工程师标准>>> 古话说的好:纸上得来终觉浅,绝知此事要躬行。对于学习建设网站的同学光看书那肯定是不够的 。所以我为大家准备了一些实际网站建设的案例和模板,全是可以运行的ASP源代码。希望大家喜欢…

2020各大网站rss订阅源地址_RSS订阅器inoreader一些使用心得

站长寄语站长之前详细介绍过如何通过rss订阅各大网站,所谓万物皆可RSS,如果想了解,可以在本站搜索rss即可,而这次站长想聊一聊使用inoreader的一些使用心得,另外一款feedly也是一款不错的rss接收工具,但是站…

查找窗口隐藏了怎么办_如何快速查找网站管理页面

很多时候,对任何URL进行扫描以查找其漏洞时,渗透测试者或安全研究人员都会尝试查找管理页面(“ admin”,控制面板或登录名)。登陆任何网站的任何管理页面是任何网站的严重漏洞。攻击者可以运行会话劫持攻击或使用蛮力方…

100个程序员学习的网站

1 程序员论坛:http://www.gxcxy.com 2 J2me社区 http://www.j2meforums.com/forum/ 3 csdn http://www.csdn.net/ 4 Vc知识库 http://www.vckbase.com/ 5 codeproject http://www.codeproject.com/ 6 程序员联合开发网 http://www.pudn.com/ 7 看雪学院 http://www.…

拿访问网站用户IP 纯JS实现

后台拿IP Java代码 String ip request.getHeader("X-Forwarded-For");if (ip null || ip.length() 0|| "unknown".equalsIgnoreCase(ip)) {ip request.getHeader("Proxy-Client-IP");}if (ip null || ip.length() 0|| "unknown"…

在 Chrome 开发者工具里通过 network 选项模拟网站的离线访问模式

Service Worker 缓存 API 的一个主要优点是它为您提供了比内置浏览器缓存更详细的控制。 例如,Service Worker 可以在用户首次运行您的 Web 应用程序时缓存多个请求,包括他们尚未访问的资产。 这将加快后续请求。 还可以实现自己的缓存控制逻辑&#xff…

如何使用 saplink 安装其他网站上提供的 ABAP 程序

本教程一个朋友留言,想了解如何用 ABAP 编程语言生成一个 Word 文档。 笔者将在此教程介绍的一种方式,需要用到一个标准的 SAP ABAP 系统上并不存在的工具库,这个工具库,需要使用专门的工具来安装,这个工具的名称,就叫做 SAPLink,这是它的官网。 本文介绍如何将最新版…

如何使用 saplink 安装其他网站上提供的 ABAP 程序试读版

零基础 ABAP 学习教程系列文章的目录 ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍 ABAP 标准培训教程 BC400 学习笔记之二:Cross-client 和 Client-specific 的区别 ABAP 标准培训教程 BC400 学习笔记之三…

带你走进网站分析的世界!

来源:书籍《网站分析实战》读书笔记第42篇▼ (本文框架)网站分析基本概念网站分析的目的:首先明确网站的目的是什么?大部分网站的目的是盈利,而网站分析的目的就是为了更好的完成网站的目的。网站分析流程&…

易语言https服务器,E2EE应用服务器套件 - 文档 - [基础教程] 使用HTTPS(SSL) - E2EE易语言网站敏捷开发框架...

使用HTTPS(SSL)1.申请证书首先您需要申请SSL/TLS证书。介绍几个免费SSL证书申请网站:申请证书的方式网上有很多相关资料,这里就不多做说明了。申请证书后通常会有以下三个文件:[SSL密匙] privkey.pem[SSL证书] cert.pem[SSL签名] chain.pem2.…

8月第4周国内IT网站/频道Top15:太平洋降至第三

IDC评述网(idcps.com)08月29日报道:根据国际统计机构Alexa公布的最新数据显示,8月第4周(2013-08-19至2013-08-25),我国IT类网站/频道中,IT168以5750的用户覆盖数首次居于第一位;而泡泡网排在了第…

查看linux服务器下接设备,linux下如何查看设备信息_网站服务器运行维护

linux下如何查看php是否启动_网站服务器运行维护linux下查看php是否启动的方法是:可以通过执行【ps -ef | grep php】命令来查看,或者是通过执行【ps -A | grep -i php】命令查看。如果需要开启php,可以执行【php-fpm start】命令。查看pci设…

《社交网站界面设计(原书第2版)》——2.11 提问

2.11 提问 人们对话或者交谈时最常见的形式就是一问一答(图2-10和图2-11)。最早的邮件列表、Usenet和Gopher,以及常见问题列表(FAQs)都是通过收集大众的智慧或一些权威人士的答案来回答人们的问题。 人们自然会有疑问…

要分析数据,可以先去这些数据网站找数据

作者:帆软来源:知乎金融财经数据同花顺数据中心:提供股票债券等金融数据和讯数据:提供各种股票、基金、外汇、债券等实时数据,有付费,有免费零壹财经:大大小小的网贷数据、排行榜等金融数据网&a…

利用python爬虫(案例1)--某电影网站的小电影们

学习笔记 前言:此案例中,要求抓取某电影网站内【最新电影栏目】里的电影名称,以及该电影的下载链接,并将这些数据存储在数据库中。 案例(某电影网站数据抓取) 首先,确定要爬取的某电影网站的URL地址 https://www.ygdy8.net/html/gndy/dyzz/index.html 查看网页是否为静…

aes加密算法_令你的文件安全有了新方法AES-256-GCM加密网站免费用

您是否一直在寻找文件安全性的解决方案? 有一个免费的文件加密网站,在这里效果很好。常用的加密技术主要分为两类:接近表示加密和不接近表示加密,AES加密是一种接近表示加密,即使用加密 泄露秘密沟通的关键。 它的全名…

程序员需知的 58 个网站

来源:cnblogs.com/three-fighter/p/13641835.html众所周知,程序员是一个需要不断学习的职业,而幸运的是,在这个互联网时代,知识就在那里,等着我们去获取。作为一个 收藏从未停止,学习从未开始 的…

Django从理论到实战(part55)--将网站上传到GitHub

代码笔记,仅供参考 文章目录上传项目到GitHub创建本地仓库在GitHub上创建仓库项目上传上传项目到GitHub 创建本地仓库 我们在git bash中敲入如下代码。 进入项目目录: cd F:/MyStudio/PythonStudio/goatbishop.project01/Django/PaperManageSystem01初…