的基本概念之一Angular应用中的组件架构是在容器和表示组件之间找到正确的平衡。
让我们来定义它们是什么:
- 表示组件都是可重用的简单UI。比如按钮、对话框、卡片、导航栏等。
- 容器组件恰恰相反:它们不可重复使用。它们被绑定到一个特定的用例。这些通常是整个屏幕或子屏幕,应用组件等。
从代码的角度来看,容器组件使用服务与后端交互。这样的组件知道使用这些服务从哪里获取数据,然后使用输入将数据提供给它们的子组件,这些子组件是表示组件:

识别这些组件的一个简单方法是演讲组件只有输入和输出,没有依赖注入。容器组件具有依赖注入而且很可能没有输入和输出。
什么时候使用容器组件和表示组件?
假设您的组件很适合成为表示组件,但正在使用服务。在这种情况下,您很可能将该服务注入到它的父容器中,然后使用输入将数据传递给该组件。这样,您的表示组件就可以在其他地方重用,而不必绑定到特定的用例。
当然,就像任何最佳实践一样,也有例外情况需要考虑。有些时候可重用性是有意义的,而有些时候则不然。如果没有意义,不要强迫你的组件归入这些类别,但如果能快速取得成功,可以尝试一下。您的应用程序体系结构(可能还有性能——请继续关注这方面的更多内容)以后会感谢您的。