当前位置: 首页 > Web前端 > vue.js

Angular应用中的几个组件分类

时间:2023-03-31 23:48:43 vue.js

Angular组件架构可以充分利用Angular的固有特性(@Input()和@Output())和ngrx/store(dispatch()和select()方法))Angular应用程序受益。在上面的架构中,我们观察到两种类型的Component:Smart(有时也称为Container)Dummy(有时称为Presentational)Container组件是唯一知道Store存在的组件。ngrx/store模块的内在特性促进了该组件与Store之间的通信。该组件通过select()方法订阅Store以接收请求流。组件通过dispatch()方法向Store分派一个动作,以指示需要更新状态。下面是SAP电商云SpartacusUI中一个典型的容器组件示例:虽然容器组件知道Store,直接和Store通信,但是显示组件不知道Store。它只是使用Angular内在函数与容器组件进行通信。ContainerComponent在与Store通信时充当两者之间的中间人。容器组件和展示组件之间的任何交互都以这种方式过滤到Store。这就是展示组件和容器组件之间的通信方式:展示组件定义了一个@Input()参数,以通过容器组件对Store的订阅从状态接收任何数据切片。容器组件负责提供呈现组件所需的适当数据。请记住,那些@Input()参数是不可变对象!展示组件使用@Output()事件发射器来请求对应用程序状态的任何更新。容器组件处理展示组件的事件,展示组件又将一个动作直接分派给Store。从上面的讨论中,我们可以清楚的看出各个组件的职责划分。展示组件仅使用Angular内在函数来呈现任何HTML,而容器组件则完全依赖ngrx/store模块内在函数。通过使用这种模式,体现了关注点分离的设计思想。应用程序中只有一层组件知道Store,其余代表组件的构建块,完全不知道Store层的存在。这种设计模式有助于将Angular应用程序构建为小型、紧凑和单一职责的表示组件集合。