带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(5)https://developer.aliyun.com/article/1340322?groupCode=taobaotech
prg 组 件 通 用 标 准
prg::com组件基本标准,所有的prg组件都遵守。
每个prg组件,都以…Service命名,以 I…Service接口的方式对外暴露,在C…Service里实现。Service概念:Service即是prgcom组件,是客户端内的独立业务单元,是对独立业务能力的抽象。 接口:IxxxService(在biz/interface目录,IxxxService.h文件)
实现:CxxxService(在biz/xxx/service目录) 获取实例:GetxxxService()
使用方法:
- 所有prg组件对外提供服务的方式是统一的。
- 使用者可以通过GetxxxService()接口获取到prg组件实例,然后通过IxxxService提供接口和事件使用组件。
- 组件内部实现CxxxService不对外暴露。
非UI组件标准
不包含ui界面的组件,平台差异影响较小,内部按业务需要设计,遵守prg组件基本标准即可。
UI组件标准
跨端ui组件的标准,主要包括了mvp分层,ui生命周期管理,以及各种场景下的多ui组合等。
ui组件依然遵从prg组件的通用标准,也支持prg组件的所有特性。
Service:是一个prgcom组件对象,外部使用ui组件时,直接操作service,就像使用非ui组件一样。UI:是界面整体,ui里包含presenter、view, 这里ui和view要区分清楚。
Presenter:是界面的逻辑对象,p层控制了所有业务逻辑,也控制view的输入输出。View:是界面的渲染对象,只负责界面渲染和用户操作输入。
在prg框架下,A组件调用组件B的UI接口:
ui组件的复杂性:
- 不同平台下的ui机制不相同,界面风格和操作习惯也不同,如何确保双端业务逻辑一致?
- ui对象的生命周期一般由ui框架内部管理,如何确保ui组件的生命周期管理不出问题?
- 如果一个组件里,包含多个ui怎么处理?多个ui之间并列关系怎么处理,嵌套关系又怎么处理?
- ui组件的场景太多,光标准定义就很复杂,如何在实际项目中落地实施?
带你读《2022技术人的百宝黑皮书》——跨桌面端之组件化实践(7)https://developer.aliyun.com/article/1340320?groupCode=taobaotech