前言
本项目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加载等等也是需要的,这个在实际的开发中,遇到了,我们在进行封装。
相关总结
由于是项目开发前的第一篇文章,我们没有重点直接开始代码编写,而是确定了项目的架构模式,代码的架构的模式,还有基础组件的选择开发,只有明确了这些,才能让接下来的项目开发变得游刃有余。
下一篇文章,我们重点概述项目的框架搭建,敬请期待!
本文标签:鸿蒙新闻资讯类应用