SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤

简介: SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤

使用服务器端渲染,我们可以保证搜索引擎,与浏览器的Javascript禁用,或没有JavaScript的浏览器仍然可以访问我们的网站内容。


https://b2bspastore.cg79x9wuu9-eccommerc1-p5-public.model-t.myhybris.cloud/powertools-spa/en/USD/


文档:https://sap.github.io/spartacus-docs/server-side-rendering-in-spartacus/#adding-ssr-support-using-schematics-recommended


package.json里添加如下依赖:image.png

  • @angular/platform-server

允许我们在服务器上运行Angular应用程序的技术, 在Angular文档中称为Angular Universal.

image.pngAngular Universal通过称为服务器端渲染(SSR)的过程在服务器上生成静态应用程序页面。

image.png根AppModule

打开文件src/app/app.module.ts并在NgModule元数据中找到BrowserModule导入。


将该导入替换为此:


BrowserModule.withServerTransition({appId : ‘your App-ID’ });

如下图所示:image.png使用以下AppServerModule代码在src/app/目录中创建一个app.server.module.ts文件image.png使用以下代码在src目录中创建一个main.server.ts文件:image.pngAngular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术。


标准的 Angular 应用会执行在浏览器中,它会在 DOM 中渲染页面,以响应用户的操作。


而 Angular Universal 会在服务端通过一个被称为服务端渲染(server-side rendering - SSR)的过程生成静态的应用页面。


它可以生成这些页面,并在浏览器请求时直接用它们给出响应。 它也可以把页面预先生成为 HTML 文件,然后把它们作为静态文件供服务端使用。


工作原理

要制作一个 Universal 应用,就要安装 platform-server 包。 platform-server 包提供了服务端的 DOM 实现、XMLHttpRequest 和其它底层特性,但不再依赖浏览器。


你要使用 platform-server 模块而不是 platform-browser 模块来编译这个客户端应用,并且在一个 Web 服务器上运行这个 Universal 应用。


服务器(下面的示例中使用的是 Node Express 服务器)会把客户端对应用页面的请求传给 renderModuleFactory 函数。SEO

网络爬虫不会像人类那样导航到具有高度交互性的 Spartacus Angular 应用,并为其建立索引。


Angular Universal 可以为你生成应用的静态版本,它易搜索、可链接,浏览时也不必借助 JavaScript。它也让站点可以被预览,因为每个 URL 返回的都是一个完全渲染好的页面。


package.json里添加dev dependency:image.png

  • 用于对服务端应用进行转译。

这些文件均需要手动修改:image.png

1. AppServerModuleimage.png参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html


服务端应用模块(习惯上叫作 AppServerModule)是一个 Angular 模块,它包装了应用的根模块 AppModule,以便 Universal 可以在你的应用和服务器之间进行协调。 AppServerModule 还会告诉 Angular 在把你的应用以 Universal 方式运行时,该如何引导它。


最后build的dist目录:image.pngclient side render(CSR,客户端渲染)模式下,第一个HTTP请求,返回的HTML页面里,cx-storefront标签是空的:

image.pngSSR模式下,第一个HTTP请求里,包含了服务器端渲染好的HTML页面:image.png也可以参考这个文档,进行SAP Spartacus SSR的调试:

How to Debug a Server–Side Rendered Storefront另一个具体开启 SSR 的步骤

create fresh angular app $ ng new

enter the directory

install spartacus with ssr v3.1.0 using schematics $ng add @spartacus/schematics@3.1.0 --ssr

set backend baseUrl in app.module of the fresh app

disable ssr optimizations by passing null as a second argument of const ngExpressEngine = NgExpressEngineDecorator.get(engine, null); in the file server.ts of your fresh app

if your test backend doesn’t have proper SSL cert, please add at the top of the file server.ts the line:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = ‘0’;

copy i18n JSON assets to your app:

cp ./node_modules/@spartacus/assets/i18n-assets ./src/assets -r

in app.module set i18n.debug to true and i18n.backend.loadPath to ‘assets/i18n-assets/{{lng}}/{{ns}}.json’,:

i18n: {

chunks: translationChunksConfig,

backend: {

loadPath: ‘assets/i18n-assets/{{lng}}/{{ns}}.json’,

},

  1. debug: true,
    },
  2. disable Javascript in your browser
  3. run $ yarn dev:ssr
  4. open in the browser http://localhost:4200/

暂时禁用 SAP Spartacus 服务器端渲染引擎的方法image.png传一个 null 进去即可。





image.pngimage.pngimage.png

相关文章
|
资源调度
SAP Spartacus UI 服务器端渲染的调试启动方式 - debug 模式
SAP Spartacus UI 服务器端渲染的调试启动方式 - debug 模式
|
12月前
|
API
关于 Spartacus 服务器端渲染的 404 Not found 页面处理
关于 Spartacus 服务器端渲染的 404 Not found 页面处理
|
JavaScript API
让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法
让 Spartacus 服务器端渲染引入 long API 调用超时机制的两种配置方法
SAP Spartacus 服务器端渲染(SSR,Server Side Rendering)专题
SAP Spartacus 服务器端渲染(SSR,Server Side Rendering)专题
|
Web App开发 存储 JSON
SAP 电商云 Spartacus 服务器端渲染的单步调试详细步骤
SAP 电商云 Spartacus 服务器端渲染的单步调试详细步骤
SAP 电商云 Spartacus UI 客户端模式下从服务器端渲染模式接收到的状态转移
SAP 电商云 Spartacus UI 客户端模式下从服务器端渲染模式接收到的状态转移
|
Web App开发 资源调度 JavaScript
SAP Spartacus develop branch 的服务器端渲染启动方式
SAP Spartacus develop branch 的服务器端渲染启动方式
|
API Apache Perl
关于 Spartacus 服务器端渲染出现 timeout 的一个具体例子的分析
关于 Spartacus 服务器端渲染出现 timeout 的一个具体例子的分析
SAP Spartacus 服务器端渲染(SSR,Server Side Rendering)专题
SAP Spartacus 服务器端渲染(SSR,Server Side Rendering)专题
下一篇
无影云桌面