鸿蒙开发:资讯项目实战之项目框架设计

前言

本项目API>=13

写了那么多的文章,总感觉缺少点什么,沉下心来细细一想,原来是没有把相关知识应用于实战,对于我们这些开发过项目,有过项目经验的人来说,项目开发小菜一点,但是对于刚接触鸿蒙的开发者而言,确实需要一个从0到1的项目进行磨炼一下,授人以鱼不如授人以渔,说干就干,那么接下来的一段时间,我会时不时的进行穿插项目实战的文章,当然了其他的技术文章也会不间断更新。

关于项目实战,选来选去,最终选择了一个资讯项目,虽然简单,但是基本上包含了大部分的所学的知识点,比如各个UI组件使用,网络请求,数据存储,列表加载,图片、视频、web组件使用等等,可以说,项目小,但功能丰富。

我的规划是,从0到1,循序渐进的分享,包含Api的知识点,也包含封装的知识点,当然了,也包含功能实现的知识点;数据接口,以真实的请求进行模拟,这里,我会搭建一套简单的本地服务器,期间我也会把源码开放出来,方便大家进行学习和使用,最终的成品App,朝着今日头条进行实现,当然了,不可能实现百分之百的功能,尽量抽取核心的功能来实现;关于项目实战的文章,我也会在文章底部进行整合,方便大家进行查看。

由于是项目开篇第一章,正所谓,磨刀不误砍柴工,我们先把整体的架构,以及包含的各个基础库先梳理一下,尽量结合实际的今日头条项目来去实现。

项目整体架构

资讯项目,相对来说,还是比较的简单,我们可以把代码统一放到主模块中实现,这样做一点问题没有,但是,为了结合市场的导向,以及未来的技术发展,我们这里依然采用组件化的形式进行开发,关于鸿蒙端如何实现组件化,之前陆陆续续已经分享了多篇文章,这里不在赘述,为什么采用组件化?这里简单在陈述一下:最大的原因莫过于解耦,使其功能模块之间相互独立,既方便后续的功能复用,也能团队协作之间明细各自的任务开发,减少一定的冲突;除此之外还有一个最突出的能力,那就是减少编译时间,提高运行测试效率。

说的在浅白一点,比如项目A有一个视频模块,后续我们又开发了项目B,同样也有一个视频模块,如果是组件化的项目,我们可以直接从项目A中复制过来使用,相对于那些把所有的代码都融合到了一个模块中,其开发效率绝对是质的的提升。

代码架构

针对代码中的架构,我们这个资讯项目采用主流的MVVM架构模式,因为ArkUI的UI开发模式本身就属于MVVM模式,对于我们来说,实现起来更加的简单。

在ArkUI中,状态变量在MVVM模式中扮演着ViewModel的角色,向上刷新UI,向下更新数据,整体框架如下图:

分层说明

MVVM架构,M就是model层,是应用的原始数据提供者,负责存储和管理应用的数据以及业务逻辑,不直接与用户界面交互;view层就是我们的页面组件,业务组件,通用组件,凡是UI绘制的就是我们的view层,比如页面组件中的登录页,列表页,编辑页等等,每个页对应需要的数据可能是完全不一样的,也可能多个页面需要的数据是同一套,主要负责用户界面展示数据并与用户交互,不包含任何业务逻辑。viewModel层,其实就是view和model层的纽带,负责管理UI状态和交互逻辑,通常一个View对应一个ViewModel,ViewModel监控Model数据的变化,通知View更新UI,同时处理用户交互事件并转换为数据操作

很多开发者对viewModel层数据和model层数据分不清楚,这里简单做一下区分,首先model层数据,是按照整个工程、项目来组织数据,构成一套完整的APP业务数据体系;而viewModel层数据,是提供某个页面上使用的数据,它可能是整个APP的业务数据的一部分。另外ViewModel层还可以附加对应Page的辅助页面显示数据,这部分数据可能与本APP的业务完全无关,仅仅是为页面展示提供便利的辅助数据。

基础组件开发

有了项目架构和代码架构,那么下一步就需要代码编写了,我们可以按照系统提供的API,进行原生实现,但是为了以后的项目开发,这个资讯项目,我们还是简单的做一层封装,比如轮播图,比如列表,比如网络请求;封装的目的在于简化代码,便于提高我们的开发效率。

目前已知的需要封装的基础组件有,第一个就是网络库,这个是肯定的,而且是一开始就需要的,毕竟哪一个模块都需要这样的能力;第二个是刷新库,一个资讯项目,下拉刷新和上拉加载,肯定都是需要的;第三个是tab库,无论是底部的主tab,还是新闻页面的tab指示,用的地方还是蛮多的;第四个是路由库,这里我们采用Navigation进行封装;当然了不仅仅是以上这些,像数据存储,web加载等等也是需要的,这个在实际的开发中,遇到了,我们在进行封装。

相关总结

由于是项目开发前的第一篇文章,我们没有重点直接开始代码编写,而是确定了项目的架构模式,代码的架构的模式,还有基础组件的选择开发,只有明确了这些,才能让接下来的项目开发变得游刃有余。

下一篇文章,我们重点概述项目的框架搭建,敬请期待!

本文标签:鸿蒙新闻资讯类应用

相关推荐
哈__25 分钟前
React Native 鸿蒙跨平台开发:Dimensions 屏幕尺寸获取
react native·华为·harmonyos
奋斗的小青年!!1 小时前
Flutter跨平台开发适配OpenHarmony:手势识别实战应用
flutter·harmonyos·鸿蒙
搬砖的kk1 小时前
Cordova 适配鸿蒙系统(OpenHarmony) 全解析:技术方案、环境搭建与实战开发
华为·开源·harmonyos
不爱吃糖的程序媛1 小时前
OpenHarmony 通用C/C++三方库 标准化鸿蒙化适配
c语言·c++·harmonyos
川石课堂软件测试2 小时前
Android和iOS APP平台测试的区别
android·数据库·ios·oracle·单元测试·测试用例·cocoa
liusheng2 小时前
Capacitor + React 的 iOS 侧滑返回手势
前端·ios
程序猿追2 小时前
鸿蒙PC应用开发深度实战:一次开发、多端适配的沉浸式音乐播放器迁移实践
华为·harmonyos
花卷HJ2 小时前
Android 通用 BaseDialog 实现:支持 ViewBinding + 全屏布局 + 加载弹窗
android
生产队队长2 小时前
Linux:awk进行行列转换操作
android·linux·运维
叶羽西2 小时前
Android15 EVS HAL中使用Camera HAL Provider接口
android