如何在组件的版本 8 中创建 angular 库,这些组件可以在将来的 angular 版本(如 12、13、14 等)中使用?

how to create angular library in version 8 of components which can use in future angular versions like 12, 13, 14 etc?

是否需要任何技术/方法或全新设置,请帮助我理解这一点。 angular元素是唯一的解决方案还是我们可以使用的任何其他方法?

我的想法:

Angular 您已经提到的元素(又名 WebComponents)。优点是它们将始终使用自己的依赖项(这意味着它们坚持使用旧版本,即使您的主应用程序已经使用了很多新版本)。缺点是您的应用程序现在必须加载旧版本和新版本。而且,更糟糕的是,如果您不采取预防措施,即使多个 WebComponents 使用相同的依赖项,每个 WebComponent 都会加载其依赖项。

如果您不使用 WebComponents,问题是您的组件代码依赖于您的主应用程序中定义的其他库。 每当这些库提供包含重大更改的新版本时,您现有的代码可能会在您熟悉它之前不再工作。

没有完美的解决方法,至少我不知道。

但通过一些措施,您可以以某种方式减少影响。

  1. 减少外部依赖。
    => 如果你的组件使用了 10 个外部库,那么其中一个很可能会有重大变化,你必须熟悉你的代码,然后如果你只使用 1-2 个外部库
  2. 尽量坚持至少要向后兼容的外部依赖项。
    => 说起来容易,做起来容易。这是一个非常严格的要求,因此很少有提供商真正尝试保持始终向后兼容。作为替代方案,我至少会检查您的所有外部依赖项是否都在使用语义版本控制,并且有很好的中断更改文档(最好的情况下还有迁移指南)。然后您至少可以知道什么时候必须检查您的代码以及如何熟练使用它。
  3. 不要在整个代码中使用外部依赖项。而是将它们包装起来,只使用包装器。
    => 如果有重大更改,这会增加您只需要熟悉包装器而不是代码中所有那些广泛使用的机会。
  4. 如果您真的想省事,请编写单元测试来测试您正在使用的库 API。这可能需要做一些工作,但好处是,当版本更改会破坏您的应用程序时,您会自动收到通知。虽然您的“正常”自动化测试可能会告诉您应用程序中的某些内容已损坏,但那些 API 测试会告诉您原因。这使得调试变得轻而易举。但是您真的必须考虑对依赖项进行单元测试 API 的额外工作是否值得。

长话短说:
使用 WebComponents,永远不必担心版本更改,但要忍受性能下降(并且您可能会错过安全更新)。

或者应用一些增加工作量的编码规则(至少在创建功能时),您仍然需要不时更新您的组件库,但至少更新它会变得容易得多。

如果你的组件库被很多项目使用。那么我更喜欢 WebComponent 方法。因为这些项目很可能会使用不同的版本,如果您不使用 WebComponent 封装,那么您的组件库将不得不支持所有这些版本。而且你必须提供和维护你的库的多个版本。
如果你的库只被一个或几个项目使用。而且你对他们有很好的控制,让他们都能适应你的新lib版本。那么我认为您也可以 运行 没有 WebComponent 解决方案并坚持上述编码实践。