✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)
🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN
🔔如果文章对您有一定的帮助请👉关注✨、点赞👍、收藏📂、评论💬。
🔥如需转载请参考【转载须知】
文章目录
- 概述
-
- 分层架构设计
- 模块化设计
- 工程框架和实现设计
- 公共能力层
- 应用通用开发范例App模块整理
-
- 1. 主页瀑布流实现案例
- 2. 滑动页面信息隐藏与组件位移效果案例
- 3. 地址交换动画案例
- 4. 阻塞事件冒泡案例
- 5. 自定义TabBar页签案例
- 6. 二级联动实现案例
- 7. 列表编辑实现案例
- 8. MpChart图表实现案例
- 9. 读取Rawfile中文件部分内容案例
- 10. 图片缩放效果实现案例
- 11. Axios获取解析网络数据案例
- 12. Tab组件实现增删Tab标签方案案例
- 13. 使用AKI轻松实现跨语言调用
- 14. 多层嵌套类监听案例
- 15. 图片选择和下载保存案例
- 16. 应用异常处理案例
- 17. 深色模式案例
- 18. 跑马灯案例
- 19. 下拉刷新上滑加载案例
- 20. 翻页动效案例
- 21. 在Native侧实现进度通知功能
- 22. 验证码布局
- 23. 使用弹簧曲线实现抖动动画及手机振动效果案例
- 24. 自定义日历选择器
- 25. 状态栏显隐变化案例
- 26. 自定义视图实现Tab效果
- 27. 听歌识曲水波纹特效案例
- 28. 城市选择案例
- 29. 组件堆叠案例
- 30. 网格元素交换案例
- 31. 折叠屏音乐播放器案例
- 32. 发布图片评论案例
- 33. 视频全屏切换案例
- 34. 多层级轮播图案例
- 35. Worker子线程中解压文件案例
- 36. 使用绘制组件实现自定义进度动画
- 37. Lottie动画
- 38. 图片压缩方案
- 39. 投票动效实现案例
- 40. Web获取相机拍照图片案例
- 41. SideBarContainer侧边栏淡入淡出动效实现案例
- 42. 图片拖拽AI抠图案例
- 43. swiper指示器导航点位于swiper下方
- 44. 大文件拷贝案例
- 45. 适配挖孔屏案例
- 46. 左右拖动切换图片效果案例
- 47. 元素超出List区域
- 48. 多文件下载监听案例
- 49. 搜索页一镜到底案例
- 50. Navigation实现多设备适配案例
- 51. 跨文件样式复用和组件复用
- 52. NAPI封装ArkTS接口案例
- 53. 手写绘制及保存图片
- 54. swiper指示器导航点位于swiper下方
- 55. 多模态页面转场动效实现案例
- 56. 侧滑返回事件拦截案例
- 57. ArkWeb同层渲染
- 58. Web组件预览PDF文件实现案例
- DEMO下载地址
- 配套平台
概述
随着应用代码复杂度的提升,为了提高应用的可维护性和可扩展性,良好的应用架构设计显得尤为重要。本篇文章将介绍一个应用通用架构的设计思路,旨在减少模块间的耦合、提升团队开发效率,为开发者提供一个清晰且结构化的开发框架。本文以“应用通用开发范例App”为例,从分层架构设计和模块化设计两个方面介绍应用的架构组成。
分层架构设计
将应用划分为以下几个层级,可以降低层间的依赖性,从而提升代码的可维护性:
- 公共能力层 (common):包括公共UI组件、数据管理、通信和工具库等。
- 基础特性层 (feature):包含独立的业务模块,如启动页、登录模块、导航栏等。
- 产品定制层 (product):作为不同设备或场景的应用入口,例如手机、电视等。
- 三方依赖库 (libs)
应用通用开发范例App分层架构
common_app_development
|---AppScope
|---common // 公共能力层
|---feature // 基础特性层
|---libs // 三方依赖库
|---product // 产品定制层
模块化设计
应用被分解为多个功能模块,其中每个模块负责执行特定的功能。通过模块化设计提高了代码的可理解性和可复用性,使应用的扩展和维护变得更为简便,同时降低了系统各部分之间的耦合度。
应用通用开发范例App模块化结构
common_app_development
|---AppScope
|---common // 公共能力层
| |---utils
| | |---component // 公共布局,如功能介绍布局
| | |---log // 日志打印
|---feature // 基础特性层
| |---addressexchange // 地址交换动画案例
| |---akiusepractice // AKI使用实践
| |---applicationexception // 应用异常处理案例
| |---barchart // MpChart图表实现案例
| |---customtabbar // 自定义TabBar页签 案例
| |---eventpropagation // 阻塞事件冒泡案例
| |---fitfordarkmode // 深色模式适配案例
| |---functionalscenes // 主页瀑布流实现
| |---gbktranscoding // Axios获取网络数据案例
| |---handletabs // Tab组件实现增删Tab标签案例
| |---imageviewer // 图片预览方案
| |---marquee // 跑马灯案例
| |---modalwindow // 全屏登录页面案例
| |---nativeprogressnotify // Native侧进度通知到ArkTS
| |---nativerawfile // Native读取Rawfile中文件部分内容
| |---navigationparametertransfer // Navigation页面跳转对象传递案例
| |---pageturninganimation // 翻页动效案例
| |---pendingitems // 列表编辑实现案例
| |---photopickandsave // 图片选择和下载保存案例
| |---pulltorefreshnews // 下拉刷新与上滑加载案例
| |---secondarylinkage // 二级联动实现案例
| |---slidetohideanddisplace // 滑动页面信息隐藏与组件位移效果案例
| |---variablewatch // 多层嵌套类对象监听案例
| |---verifycode // 验证码布局
| |---vibrateeffect // 基础特性层-抖动动画及手机振动效果
| |---customcalendarpickerdialog // 基础特性层-自定义日历选择器
| |---navigationbarchange // 基础特性层-状态栏显隐变化案例
| |---customview // 基础特性层-自定义视图实现Tab效果
| |---waterripples // 基础特性层-听歌识曲水波纹特效案例
| |---citysearch // 城市选择案例
| |---componentstack // 组件堆叠案例
| |---dragandexchange // Grid和List内拖拽交换子组件位置案例
| |---foldablescreencases // 折叠屏音乐播放器案例
| |---imagecomment // 发布图片评论案例
| |---mediafullscreen // 视频全屏切换案例
| |---swipercomponent // 多层级轮播图案例
| |---swipersmoothvariation // Swiper高度可变化效果案例
| |---decompressfile // Worker子线程中解压文件案例
| |---paintcomponent // 使用绘制组件实现自定义进度动画案例
| |---lottieview // Lottie动画库
| |---imagecompression // 图片压缩方案
| |---votingcomponent // 投票组件
| |---webgetcameraimage // WebView拉起原生相机案例
| |---sidebaranimation // SideBarContainer侧边栏淡入淡出动效实现案例
| |---imageenableanalyzer // 图片拖拽AI抠图案例
| |---indicatorbelowswiper // swiper指示器导航点位于swiper下方
| |---bigfilecopy // 大文件拷贝案例
| |---diggingholescreen // 适配挖孔屏案例
| |---dragtoswitchpictures // 左右拖动切换图片效果案例
| |---listitemoverflow // 元素超出List区域
| |---multiplefilesdownload // 多文件下载监听案例
| |---searchcomponent // 搜索页一镜到底案例
|---libs
|---product
| |---entry // 产品定制层-应用入口
工程框架和实现设计
产品定制层
产品定制层专注于满足不同设备或使用场景(如应用/元服务)的个性化需求,包括U