这些关系如下:
- 组件实例树:描述组件实例的组合方式(它们的父子关系)。
- 功能路由图:描述组件实例如何获得使用其他组件实例发布的功能的权限(其提供方-使用方关系)。
组件实例
组件实例是组件的独特体现,在与其他组件实例(包括同一组件的其他实例)隔离的沙盒中运行。
在上下文明确的情况下,您通常可以将“组件”和“组件实例”等术语互换使用。例如,使用“启动组件实例”一词比使用“启动组件”一词更准确,但您可以轻松推断出“启动组件”需要先创建该组件的实例,然后才能启动该实例。
虽然组件通过网址进行标识,但组件实例通过标识名进行标识。因此,同一组件的不同实例共用相同的网址,但具有不同的标识名。
组件实例树
组件实例树表示组件如何组合在一起以构成更复杂的组件。
通过使用分层组合,父级组件可以创建其他组件的实例,这些实例称为其子级。子实例属于父实例,并依赖于父实例为其提供运行所需的功能。与此同时,父级通过capability 路由获得对其子级公开的 capability 的访问权限。
您可以通过以下两种方式创建子项:
- 静态:父级在自己的组件声明中声明子级的存在。如果在父级软件的更新版本中移除子声明,系统会自动销毁子项。
- 动态:父项使用 Realm 框架协议将子项添加到父项声明的组件集合。父项以类似的方式销毁子项。
组件拓扑以组件实例树的形式表示这些父子关系的结构。
Monikers
标识名使用拓扑路径标识组件树中的特定组件实例。标识名有三种类型,具体取决于标识名的使用方式和所描述的关系类型:绝对、相对和子标识名。
如需了解详情,请参阅别名文档。
大区
realm 是组件实例树的子树。每个领域都以组件实例为根,并包含该实例的所有子项及其后代。换句话说,realm 用于表示组件实例的层次结构组合。
领域是组件拓扑中的重要封装边界。每个领域的根目录都会获得某些特权,以影响组件的行为,例如:
- 声明功能如何流入、流出和在令牌网格中流动。
- 绑定到子组件以访问其功能。
- 创建和销毁子组件。
如需了解详情,请参阅 Realm 文档。
封装
组件充当封装边界。除非公开声明明确允许,否则功能无法逃出组件的领域。
孩子永远依赖于其父母;他们无法再获得新的父母,也无法比父母长寿。当父项被销毁时,其所有子项也会被销毁。
此模型类似于面向对象编程语言中的组合。
如需了解详情,请参阅 Realm 文档。
capability 路由图
capability 路由图描述了组件如何获得使用组件实例树中其他组件公开和提供的 capability 的权限。为了让组件实例提供的 capability 可供使用方组件实例使用,必须在它们之间建立 capability 路由路径。此类 capability 路由由组件声明中的 use
、offer
和 expose
声明决定。
如需了解详情,请参阅功能路由文档。