Skip to content

简介

IOC控制反转是进行系统解耦行之有效的架构设计,也是应对大型业务系统开发的支撑工具

状态共享: 4合1

在实际开发当中,会遇到四个范围的状态共享:组件内部组件之间全局系统。在传统的 Vue3 当中,分别采用不同的机制来实现,而在 Zova 中只需要采用统一的 IOC 容器机制

状态共享范围传统的Vue3Zova
组件内部ComposableIOC
组件之间Provide/InjectIOC
全局PiniaIOC
系统ES ModuleIOC

可能有人会问,全局状态共享系统状态共享有何区别?

因为在 SSR 场景中,全局状态共享是针对每一个Request而言的,系统状态共享则可以跨越Request

IOC容器

在 Zova 中有三类 ioc 容器:

  1. sys容器:在系统初始化时,会自动创建唯一的 sys ioc 容器。在这个容器中创建的 Bean 实例都是单例模式
  2. app容器:在响应请求时,系统会为每一个请求创建一个 app ioc 容器。在这个容器中创建的 Bean 实例是请求级别的单例模式
  3. ctx容器:在创建 Vue 组件实例时,系统会为每一个 Vue 组件实例创建一个 ctx ioc 容器。在这个容器中创建的 Bean 实例可以在组件实例范围之内共享数据和逻辑

Bean Class

Zova 采用模块化体系,Bean Class 都由不同的模块提供

注入范围

Zova 提供了以下几种注入范围:

  1. sys:在 sys 容器中注入
  2. app:在 app 容器中注入
  3. ctx:在 ctx 容器中注入
  4. new:总是创建一个新的 bean 实例

注入范围: 层级注入

注入范围还支持层级注入,替代 Vue3 Provide/Inject 的能力:

  1. host:在当前组件实例的 ctx 容器以及所有父容器中依次查找并注入 bean 实例
  2. skipSelf:在所有父容器中依次查找并注入 bean 实例

注入方式

Zova 提供了两种注入方式:

  1. 依赖注入:通过@Use装饰器提供基于属性的依赖注入
  2. 依赖查找:直接通过 ioc 容器查找所需要的 bean 实例,如果没有就自动创建

基于 MIT 许可发布