触发方式:将下列 url 粘贴到浏览器地址栏里,回车:
http://localhost:4000/Open-Catalogue/Cameras/Hand-held-Camcorders/c/584
最终会触发一系列递归的函数调用:
refreshView
refreshChildComponents
refreshComponent
refreshEmbeddedViews
在 refreshView 里,会调用 Component 的一系列 hook,比如 ngOnInit:
注意
下列这些代码执行,都是在服务器端,nodejs 服务器运行环境下执行的!
在服务器端运行环境下,window 等全局变量不可用。ComponentWrapperDirective 指令的 ngOnInit,最终会调用 this.launchComponent 方法,创建 Component 实例:通过执行模板函数的方式,执行服务器端渲染,下图就是具体的模板生成逻辑。其中,访问 url 后看到的业务数据,即 category code 为 584 对应的产品数据,都是通过服务器端调用 Commerce API,从 Commerce Cloud 后台读取的:
http://localhost:4000/Open-Catalogue/Cameras/Hand-held-Camcorders/c/584
this.search 执行的参数: