# 鸿蒙证券App组件化重构 **Repository Path**: jiashaoying/HuaFuSecHmos ## Basic Information - **Project Name**: 鸿蒙证券App组件化重构 - **Description**: 没有啥可说的,还挺保密的。 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-08 - **Last Updated**: 2024-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SecHmos #### 介绍 股票鸿蒙架构 ### 架构 #### 分层架构设计 HarmonyOS的分层架构主要包括三个层次:产品定制层、基础特性层和公共能力层。 本应用在产品定制层满足了不同设备类型的个性化需求。 基础特性层提供了登录、我的、学习和发现等核心功能模块,为各设备提供通用的功能支持。 公共能力层则提供了一套基础的开发组件和服务,包括公共UI组件、数据存储、网络和工具库,为应用开发提供了基础设施支持。 详见[最佳实践-分层架构设计](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/layered-architecture-design-0000001725966009)。 #### 模块化设计 在HarmonyOS中,模块化不仅是一个设计原则,更是一种开发实践。它旨在将应用程序拆分为多个功能模块,每个功能模块负责特定的功能或特性。功能模块可以独立开发、编译和部署,也可以在不同的设备上灵活组合和调用,实现真正的多端协同。 本应用展现了HarmonyOS模块化设计的优势和实践方法。详见[最佳实践-模块化设计](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/modular-design-0000001678046862)。 ### 一次开发多端部署 本应用使用自适应布局和栅格布局等响应式布局方式,实现一套代码同时适配手机、折叠屏、平板等多种设备的能力。 ### 性能 - 使用MVVM的设计模式,以实现更好的状态管理,减少应用的性能问题。详见[状态管理最佳实践](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/status-management-0000001788519533)。 - 本应用中采用了属性动画、路径动画、粒子动画、lottie动画等方式实现了多种动画效果。详见[动画实践案例](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/fair-use-animation-0000001847526333)。 - 本应用使用Navigation进行界面跳转,并使用了多种界面转场动画。详见[合理使用界面间转场](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/page-transition-0000001728345693) - 使用懒加载和组件复用等方式提升长列表加载性能。详见[长列表加载性能优化](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/best-practices-long-list-0000001728333749)。 - 本应用开发过程中,使用Frame分析、定位、解决卡顿问题。详见[滑动卡顿分析](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/frame-practice-0000001680315296)。 ### 安全 为增强用户对于个人数据隐私保护的控制和知情权,本应用添加了用户隐私说明弹窗,首次启动获得用户同意后,应用才能开始正常使用。详见[隐私保护最佳实践](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-privacy-protection-0000001784690413)。 ### 约束与限制 1. 本示例仅支持标准系统上运行,支持设备:华为手机。 2. 本示例为Stage模型,支持HarmonyOS NEXT Developer Preview1 SDK及以上版本。 3. 本示例需要使用DevEco Studio NEXT Developer Preview1及以上版本进行编译运行。 #### 使用说明 ## 鸿蒙脚手架搭建日志 > 2024.1.9更新 ### 瞎说两句 - 一个APP不管使用什么底座和开发语言,思想上总会有很多相通的地方,比如功能上都需要有统一的日志组件,存储框架,网络请求框架,web容器等,UI上可能有统一封装的Toast,Dialog,各种tab,banner等。 - 脚手架的意义是致力于一些基础且通用的组件和功能的封装,既能满足上层业务快速startup,又能进行统一维护,尽可能降低后期混乱程度。 ### 再瞎说两句 一般来说客户的软件架构可以遵循以下分层,视发展规模,团队人员等动态调整,但是八九不离十,毕竟作为一个商业项目,没有一点组件化影子都不好意思和别人打招呼ORZ。 ![img_1.png](img_1.png) 简单说明下: - framework属于业务无关,基础工具类,通用UI等 - middleware属于业务相关的通用组件,通用UI,通用逻辑 - biz属于具体业务组件,比如登录模块,业务A,业务B等 - entry最上层,一般只包含一些全局初始化,或者不好归类于具体业务的,或者干脆只是一个壳子 ### 项目说明(持续更新) 以目前的了解,华为的项目结构依赖和安卓类似,但是又摒弃了gradle,但是模块化和组件化的概念还是一样的,鸿蒙lib库可打包称为har的包供其他工程依赖,类似安卓的aar,且也有远程仓库的概念,所以还是通过module拆开 #### framework ##### commlib 基础工具类库 - log: log工具类MLog,支持统一开关,统一tag,切换hilog或者console,支持打印行号(暂时注释掉了),配置通过LogOptions配置 - toast: 工具类MToast,方便后续统一管理 - KV存储: 工具类MPreferencesUtil,类似安卓的SP,简单且常用的本地持久化,但是这个返回的是异步的promise - event: 类似广播,eventbus等,华为自己封装好了一套,定义action就行 - network: 封了两套,一套是基于鸿蒙自己http的,一套是基于axios的,推荐axios,明显功能和可用性会更好,axios也是排第一的三方库 - loading: 基于event封装了loading的事件,也就是说任何页面都可以调起全局loading页,很多时候还是有点用 ...... ##### uilib 基础UI库 - MLoadingDialog: 全局的通用loading,暂不支持定制UI,也是commlib中loading事件的被调用方 - MDialogUtil:控制各种dialog可以在这里收口,目前只有alertDialog - MCommDialog: 通用弹窗,标题内容确定取消那种,同时支持自己定义view塞进来 #### entry - 上面的使用示例都写在这里 - 试了一下router的页面跳转 - 试验了一下web容器加载,并且测试了下bridge,以及用一个BaseViewModel去实现类似interface的功能,这一块待封装成通用web组件