天天看点

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

使用服务器端渲染,我们可以保证搜索引擎,与浏览器的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里添加如下依赖:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

  • @angular/platform-server

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

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

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

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

根AppModule

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

将该导入替换为此:

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

如下图所示:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

使用以下AppServerModule代码在src/app/目录中创建一个app.server.module.ts文件

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

使用以下代码在src目录中创建一个main.server.ts文件:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 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:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。
  • 用于对服务端应用进行转译。

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

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

1. AppServerModule
SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。
参考链接: https://www.cnblogs.com/laixiangran/p/8664480.html

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

最后build的dist目录:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

client side render(CSR,客户端渲染)模式下,第一个HTTP请求,返回的HTML页面里,cx-storefront标签是空的:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

SSR模式下,第一个HTTP请求里,包含了服务器端渲染好的HTML页面:

SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。

也可以参考这个文档,进行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/[email protected] --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 服务器端渲染引擎的方法
SAP Spartacus 手动开启服务器端渲染 (SSR) 所必须的步骤1. AppServerModule参考链接:https://www.cnblogs.com/laixiangran/p/8664480.html暂时禁用 SAP Spartacus 服务器端渲染引擎的方法传一个 null 进去即可。
传一个 null 进去即可。

继续阅读