头图

Above-the-Fold Loading 加载机制在 Spartacus Storefront 里的应用

Angular 应用默认情况下,Component 组件总是被积极渲染,不管组件是否在用户的 viewports 中。 这可能对性能带来负面影响,但可以通过评估视口与组件来进行优化—— View ports 内(或附近)的所有组件都应该加载,其他组件可以延迟。

作为延迟加载的一个积极的副产物,我们将看到组件内部数据的延迟加载。

下面一些例子:

  • 产品评论只会在呈现产品评论组件时加载(因为标签或滚动)
  • 只有在使用 hamburger menu 时才会加载手机上的导航数据
  • 初始视口外的旋转木马幻灯片被推迟,直到用户 rotate 到它们为止。

这推迟了产品/组件数据以及横幅/产品图像的加载。

注意:

  1. 在 SSR 中,我们必须跳过延迟加载,因为完整的 SSR 响应应该被索引。
  2. 需要 CSS 来确保布局(插槽)使用的初始空间占用相当大的空间,以确保组件在初始视口之外。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9Z1b2ph-1679300242720)(https://upload-images.jianshu.io/upload_images/2085791-f49f68...)]

above-the-fold 在默认的 Spartacus Storefront 中处于 disabled 状态。也就是说,在移动视图中打开开发工具和店面,在加载完整店面后,当打开汉堡包菜单时,没有进行额外的后端 API 调用(即导航组件)。

如何开启 deferred loading 功能

在 app.module.ts 中进行配置:

deferredLoading: {
  strategy: DeferLoadingStrategy.DEFER,
  intersectionMargin: '50px',
}

在移动视图中打开开发工具和店面,验证在加载完整店面后,当打开汉堡包菜单时,会针对导航、语言和货币进行额外的 API 调用。

这是预期的行为,因为在不打开导航的情况下不需要这些。

从 app.module.ts 中删除 JsonLdBuilderModule 并验证产品评论数据的后端调用,仅在打开 PDP 上的评论选项卡时生成。 这是因为JsonLdBuilderModule 会在 SSR 或开发模式下加载评论。


Jerry Wang的SAP技术专栏
SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使
911 声望
1.6k 粉丝
0 条评论
推荐阅读
什么是 Angular 项目中的 tsconfig.api-extractor.json 文件
在 Angular 项目中,"tsconfig.api-extractor.json" 是一个用于配置 API Extractor 工具的配置文件。API Extractor 是一个用于生成和管理 TypeScript 库的 API 文档的工具。它能够从 TypeScript 代码中提取公共 A...

JerryWang_汪子熙阅读 147

封面图
「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...

wuwhs39阅读 4.7k评论 5

封面图
安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城31阅读 7.1k评论 5

封面图
在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 1.9k

封面图
【已结束】SegmentFault 思否写作挑战赛!
SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑战,向更好的自己前进!

SegmentFault思否20阅读 5.6k评论 10

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.6k评论 3

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco18阅读 2k评论 2

911 声望
1.6k 粉丝
宣传栏