SAP Spartacus 有多达 31 个 AppInitiators:

SeoModule 是其中之一。

initSeoService 方法里,执行 SeoMetaService 的 init 方法。


Init 方法里,读取 meta 数据:

Page 对象的明细:

解析到的 meta 数据:

第 30 行给 this.meta 赋值,就会触发第 33行的 set 操作:

在 set 操作里分别给每个字段比如 title 赋值,又会进一步触发 title 的 set 操作:


这里会调用 ngTitle 设置 title:

触发对应的 setter:

这里准备添加 description meta tag 了:

转移到框架实现:platform-browser.js

最后还是通过 dom 的原生方法,createElement 创建的 meta 标签:

最后在 Chrome 开发者工具的 Elements 里能看到 meta 标签了:

但是,view source 的显示里,并没有这个 meta 标签:

更多Jerry的原创文章,尽在:“汪子熙”:

SAP Spartacus CMSService 的调用栈以及 meta 标签的生成过程相关推荐

  1. 在 SAP Spartacus 里如何调用 hybris 里实现的自定义 API

    需求:We have a custom API created in hybris and I need to use the data returned by that custom API in ...

  2. SAP Spartacus CmsService的CmsActions.LoadCmsComponent

    在这个class的下列方法里加上console.log: const loading$ = combineLatest([this.routingService.getNextPageContext( ...

  3. SAP Spartacus CmsService.Components数据结构

    源代码: export class CmsService {private components: {[uid: string]: {[pageContext: string]: Observable ...

  4. 关于 SAP Spartacus Loader Meta Reducer 的用途 - loading 在 true 和 false之前切换的逻辑

    为了给用户更好的反馈,基于他们的行为,我们经常需要保留诸如"正在加载购物车"."获取用户地址失败"等信息. 对于每个单独的应用程序状态,我们必须将元数据放在旁边 ...

  5. SAP Spartacus index.html里的meta标签

    meta标签用来描述页面的元数据. 我把index.htmll里的meta标签注释掉,仍然能够正常工作,这是为什么呢? 后台url维护在Environment.occBaseUrl字段里: 注入Con ...

  6. 使用SAT跟踪监控从浏览器打开的SAP应用的性能和调用栈

    今天是农历鼠年大年初四,本文是鼠年第4篇文章,也是汪子熙公众号第203篇原创文章. 大家这几天在家里宅得如何了?貌似不少朋友都闷坏了. 我们继续学习. Jerry之前的文章 SAP错误消息调试之七种武 ...

  7. 如何打印出 SAP Spartacus 调用 OCC API 消费的所有 endpoint

    本文写作的 SAP Spartacus 版本:3.3.0. 直接修改这个文件: node_modules@spartacus\core_ivy_ngcc_\fesm2015\spartacus-cor ...

  8. 如何找到 SAP Spartacus 里某个 Component TypeScript 编译后生成的 JavaScript 位置

    需求 如何找到触发该网络请求的准确代码位置? 从 initiator 里查看调用栈上下文,一点头绪也没有. 找到触发该网络请求的控件的 selector:cx-register 在 Storefron ...

  9. SAP Spartacus 服务器端渲染单步调试步骤之二:在服务器端执行应用程序 Angular 代码

    前文:SAP Spartacus 服务器端渲染单步调试步骤之一:应用程序准备工作 入口: 进入 platform-server.js: 入口: 最终在服务器端执行 bootstrap,输入 Compo ...

最新文章

  1. LL(1)预测分析表的构造
  2. vertical-align 和 img属性 和 鼠标样式
  3. 算法---计数质数(Java)
  4. php根据指定时间日历,php学习笔记(十三)时间处理与日历的实现
  5. 网站https加载不出css样式_Python Web全栈之旅04--Web前端●走入CSS的世界
  6. 4.与JSP的第一次握手
  7. 并发和并行的区别简单介绍
  8. 程序员如何保持身心健康,做到这几点,远离秃头。
  9. 一张图教你如何选择机器学习算法
  10. vrrp路由协议实验
  11. python时间库date和datetime
  12. sync是同步还是非同步_高速AD项目学习笔记——实现sync同步的经验
  13. 自制操作系统软盘镜像的创建过程
  14. chartControl
  15. Matlab的最优化实现方法之线性规划:linprog
  16. Android 设备管理器 理解和使用
  17. python代码封装加密_Python代码加密混淆
  18. 基于vue+spring的博客系统
  19. 成都榆熙:拼多多商家如何批量设置产品属性值?
  20. 多国拟发ChatGPT禁令 关“野兽”的笼子要来了?

热门文章

  1. 理解工作流系统参考模型
  2. 课后作业之字符串加密
  3. iOS10 NSURLErrorDomain Code 1200
  4. 167. Two Sum II - Input array is sorted
  5. android邮件发送几种方式
  6. matlab产生正态分布样本
  7. zookeeper配置
  8. Coolite Toolkit学习笔记系列文章
  9. 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用
  10. 方立勋_30天掌握JavaWeb_request