如何使用Spartacus库的私有API

有时我们想要扩展的类不是 Spartacus 公共 API 的一部分。因此我们不能直接SomeClass@spartacus/xxxxx.

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

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

回答

当您需要 Spartacus 的私有 API 成员时,请先:

  • 在Spartacus github 问题中搜索相关请求以将其公开
  • 如果没有问题,请创建一个新问题。

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

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

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

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

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

/* ... */

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

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

警告:?-alias 可能会在没有任何警告的情况下在 Spartacus 的任何下一个版本中更改。它不是公共 API 的一部分。


以上是如何使用Spartacus库的私有API的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>