组件拓扑

这些关系如下所示:

  • 组件实例树:描述组件实例如何组合在一起(其父子关系)。
  • 功能路由图:描述组件实例如何获得使用其他组件实例发布的功能的权限(其提供方 - 使用方关系)。

组件实例

如果上下文清晰,您通常可以将术语“组件”和“组件实例”互换使用。例如,“启动组件实例”比“启动组件”更精确,但您可以轻松推断出“启动组件”需要先创建该组件的实例,然后才能启动该实例。

组件通过网址来标识,而组件实例则通过名称来标识。因此,同一组件的不同实例共享相同的网址,但所用名称不同。

组件实例树

“组件实例树”表示如何将各个组件组合在一起来制作更复杂的组件。

使用分层组合,父组件会创建其他组件的实例,这些实例称为其子组件。子实例属于父实例,并且依赖于父实例为它们提供运行所需的功能。同时,父级可通过功能路由获得其子级公开的功能的访问权限。

子项可通过以下两种方式创建:

  • 静态:父项在自己的组件声明中声明子项的存在。如果在更新版本的父级软件中移除子级声明,则子级会自动销毁。
  • 动态:父级使用 Realm 框架协议将子级添加到父级声明的组件集合中。父级以类似的方式销毁子级。


组件实例树示意图

名称

别名使用拓扑路径标识组件树中的特定组件实例。别名有三种类型,具体取决于别名的使用方式及其描述的关系类型:绝对、相对和子级。

如需了解详情,请参阅名称文档


带有名称的组件实例树示意图

领域

realm 是组件实例树的子树。每个大区都基于一个组件实例,并包含该实例的所有子级及其后代。换句话说,领域表示组件实例的分层组合

领域是组件拓扑中重要的封装边界。每个大区的根都会获得特定特权来影响组件的行为,例如:

  • 声明功能如何流入、流出和在领域内。
  • 绑定到子组件,以访问其功能。
  • 创建和销毁子组件。

如需了解详情,请参阅领域文档


组件领域示意图

封装

组件充当封装边界。除非 expose 声明明确允许,否则 capability 无法对组件的 realm 进行转义。

子项始终依赖于其父项;它们不能更改父项,也不能比父项存在的时间更长。当一个父项被销毁时,其所有子项也会被销毁。

该模型类似于面向对象编程语言中的组合

如需了解详情,请参阅领域文档


组件实例封装示意图

功能路由图

功能路由图描述了组件如何获得使用组件实例树中由其他组件公开和提供的功能的访问权限。为了使组件实例提供的功能可供使用方组件实例使用,它们之间必须有功能路由路径。此类功能路由由组件声明中的 useofferexpose 声明确定。

如需了解详情,请参阅功能路由文档


功能路由图