许多客户将采纳逐渐(route-by-route)的形式从 Accelerator 迁徙到 spartacus,这意味着客户将应用不同的零碎在同一域中同时驱动局部店面。
咱们心愿反对具备可配置的路由,并可抉择从 SPA 中退出并从新加载页面以容许后端驱动的响应(基于 URL 模式)。
只有咱们在 SPA 的范畴内,咱们只执行 interal
导航,因为应用了 Angular 的 routerLink
,依照设计它不会进行齐全从新加载。
然而,咱们能够应用 Guard
定义 虚构路由
,强制执行指定配置门路的齐全从新加载。
为了更容易测试(不要进入闪动页面从新加载的有限循环),通过扩大 External Routes Guard 来提早页面从新加载:
@Injectable()
export class CustomRoutingMigrationGuard extends ExternalRoutesGuard{redirect(route, state) {console.log('migration guard activated, redirect in 5 seconds');
setTimeout(() => {super.redirect(route, state);
}, 5000);
}
}
在 app Module 里定义这个 Guard:
providers: [{ provide: ExternalRoutesGuard, useClass: CustomRoutingMigrationGuard},
]
测试:
routing: {
internal: [
'/**',
'!/cart',
'!/?',
'!/???',
'!/login',
'!/login/register',
'!/product/*/*',
'!/Open-Catalogue/**/p/**',
]
}
验证上面列出的页面是否执行从新加载(因为短少后端规定而产生有限循环的从新加载,这些规定通常会依据 URL 其模式出现不同的店面):
/cart
/x
/faq
/abc
/login
/login/register
/product/358639/DSC-N1
/Open-Catalogue/Cameras/DigitalCameras/Digital-Compacts/NV10/p/553637
https://github.com/SAP/sparta…
Angular 预配置了 webpack 开发服务,该服务应用开发人员能够配置的代理服务器。如果您有本地运行的 Accelerator,能够为那些应该链接到本地 Accelerator 的路由应用代理配置。咱们须要记录以下内容:
- 应用代理配置文件配置 angular.json 文件
- 记录一个示例代理配置
- 记录一个 package.json 脚本以便于启动
咱们还能够应用本地 nginx 记录代替设置。
- ExternalRouting Module does not get added when generating / updating a project
- Support for Hybrid Storefront with Accelerator
- How to configure Spartacus and Accelerator based Storefront Side by Side? (External Routes)
为了实现这两个店面都在同一个域下,须要设置一个 apache 虚拟主机或其余货色(假如 electronics.local 指向 9002 和 4200)。