如何使用 Spartacus 库的 private API

How to use private API of the Spartacus library

有时我们想要扩展的 class 不是斯巴达克斯 public API 的一部分。因此我们不能直接从 @spartacus/xxxxx.

导入 SomeClass

我们已经在 public API 中发现或创建了一个关于导出 SomeClass 的提案的 github 问题。现在等待斯巴达克斯核心团队的回应。

如果我们真的需要导入它并在我们的项目中扩展,我们在此期间可以做什么?

当您需要斯巴达克斯私人API会员时,请先:

免责声明:Spartacus 的私有API一般不应该使用。它可能会在没有任何警告的情况下随时更改。您可以使用以下解决方法来承担您自己的风险。升级到任何下一个版本后,这可能会导致您的代码被破坏。

打开文件 node_modules/@spartacus/xxxxx/spartacus-xxxxx.d.ts 并找到 class 的导出别名,前缀为符号 ɵ:

export { SomeClass as ɵxyz } from '..........';

然后您可以在您的应用程序中使用别名,例如扩展 class 行为:

import { ɵxyz as SomeClass } from `@spartacus/core`;

/* ... */

// for example:
@Injectable()
export class CustomSomeClass extends SomeClass { 
  /*...*/ 
}

/* ... */
@NgModule({
  providers: [
     { provide: SomeClass, useClass: CustomSomeClass }
  ]
})

警告:ɵ-别名可能会在 Spartacus 的任何下一个版本中更改,而不会发出任何警告。它不是 public API.

的一部分